Bird
Raised Fist0
Goprogramming~5 mins

Defining methods in Go - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a method in Go?
A method in Go is a function with a special receiver argument. It is like a function tied to a specific type, allowing you to call it using the dot notation on values of that type.
Click to reveal answer
intermediate
How do you define a method with a pointer receiver in Go?
You define a method with a pointer receiver by specifying the receiver as a pointer type in parentheses before the method name, for example:
func (p *Person) UpdateName(newName string) { p.Name = newName }
This allows the method to modify the original value.
Click to reveal answer
intermediate
What is the difference between a value receiver and a pointer receiver in Go methods?
A value receiver gets a copy of the value, so changes inside the method do not affect the original. A pointer receiver gets the address, so changes inside the method affect the original value.
Click to reveal answer
intermediate
Can methods be defined on any type in Go?
No, methods can only be defined on named types declared in the same package. You cannot define methods on built-in types or types from other packages.
Click to reveal answer
beginner
Example: Define a method called Greet for a struct Person that prints a greeting message.
<pre>package main

import "fmt"

type Person struct { Name string }

func (p Person) Greet() {
    fmt.Println("Hello, my name is", p.Name)
}</pre>
Click to reveal answer
What does the receiver in a Go method specify?
AThe type the method belongs to
BThe return type of the method
CThe package where the method is defined
DThe name of the method
Which receiver type allows a method to modify the original value?
AValue receiver
BInterface receiver
CConstant receiver
DPointer receiver
Can you define a method on the built-in type int in Go?
ANo, never
BYes, always
COnly if int is declared in your package
DOnly if int is a pointer
How do you call a method named Print on a variable p of type Person?
APrint(p)
Bp.Print()
CPerson.Print(p)
DPrint.Person(p)
What happens if you define a method with a value receiver and modify the receiver inside the method?
AThe program will not compile
BThe original value is changed
COnly the copy inside the method changes
DThe method runs twice
Explain how to define a method in Go and the role of the receiver.
Think about how methods are like functions tied to a type.
You got /4 concepts.
    Describe the difference between pointer and value receivers and when to use each.
    Consider if you want the method to change the original data or not.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the purpose of defining a method with a receiver in Go?
      easy
      A. To import external packages into the program
      B. To create a standalone function unrelated to any type
      C. To associate a function with a specific type so it can act on its data
      D. To declare a global variable accessible everywhere

      Solution

      1. Step 1: Understand what a receiver does

        A receiver connects a method to a type, allowing the method to access or modify that type's data.
      2. Step 2: Compare with other options

        Options A, B, and C describe unrelated concepts: imports, standalone functions, and global variables.
      3. Final Answer:

        To associate a function with a specific type so it can act on its data -> Option C
      4. Quick Check:

        Receiver links method to type = D [OK]
      Hint: Receiver connects method to type's data [OK]
      Common Mistakes:
      • Thinking methods are standalone functions
      • Confusing methods with variables
      • Believing receivers import packages
      2. Which of the following is the correct syntax to define a method named Speak for a struct type Dog?
      easy
      A. func (d Dog) Speak() { }
      B. func Speak(d Dog) { }
      C. func Dog.Speak() { }
      D. func Speak() Dog { }

      Solution

      1. Step 1: Recall Go method syntax

        Methods use the form: func (receiver Type) MethodName() { }.
      2. Step 2: Match syntax to options

        func (d Dog) Speak() { } matches this pattern exactly. func Speak(d Dog) { } is a function, not a method. func Dog.Speak() { } is invalid syntax. func Speak() Dog { } is a function returning Dog, not a method.
      3. Final Answer:

        func (d Dog) Speak() { } -> Option A
      4. Quick Check:

        Method syntax = func (receiver Type) Name() [OK]
      Hint: Method syntax always has receiver in parentheses before name [OK]
      Common Mistakes:
      • Omitting receiver parentheses
      • Using dot notation in function name
      • Confusing methods with functions
      3. What will be the output of this Go program?
      package main
      import "fmt"
      type Counter struct { value int }
      func (c Counter) Increment() {
          c.value++
      }
      func main() {
          c := Counter{value: 5}
          c.Increment()
          fmt.Println(c.value)
      }
      medium
      A. 6
      B. 5
      C. 0
      D. Compilation error

      Solution

      1. Step 1: Understand receiver type in Increment method

        The method uses a value receiver (c Counter), so it works on a copy of the struct, not the original.
      2. Step 2: Trace the method call and print

        Increment increases the copy's value, but original c.value remains 5. So printing c.value outputs 5.
      3. Final Answer:

        5 -> Option B
      4. Quick Check:

        Value receiver does not modify original = 5 [OK]
      Hint: Value receiver copies data; original stays unchanged [OK]
      Common Mistakes:
      • Assuming value receiver changes original data
      • Confusing pointer and value receivers
      • Expecting incremented output
      4. Identify the error in this method definition:
      package main
      import "fmt"
      type Person struct { name string }
      func (p *Person) SetName(newName string) {
          p.name = newName
      }
      func main() {
          p := Person{name: "Alice"}
          p.SetName("Bob")
          fmt.Println(p.name)
      }
      medium
      A. No error; code runs and prints 'Bob'
      B. Cannot call method with pointer receiver on value variable
      C. Method must return a value
      D. Missing import of fmt package

      Solution

      1. Step 1: Check pointer receiver usage

        In Go, methods with pointer receivers can be called on value variables; Go automatically takes address.
      2. Step 2: Verify imports and method behavior

        Code imports fmt, method sets name correctly, so p.name becomes "Bob" and prints it.
      3. Final Answer:

        No error; code runs and prints 'Bob' -> Option A
      4. Quick Check:

        Pointer receiver works on value variable = B [OK]
      Hint: Pointer receiver methods can be called on values directly [OK]
      Common Mistakes:
      • Thinking pointer receiver requires pointer variable
      • Forgetting Go auto-addressing
      • Expecting compile error
      5. You want to define a method Reset for a struct Timer that sets its seconds field to zero. Which receiver type should you use and why? Options: A) Pointer receiver, because it modifies the original struct's field B) Value receiver, because it copies the struct and resets the copy C) Value receiver, because methods cannot have pointer receivers D) Pointer receiver, but it cannot modify fields inside the struct
      hard
      A. Pointer receiver, but it cannot modify fields inside the struct
      B. Value receiver, because it copies the struct and resets the copy
      C. Value receiver, because methods cannot have pointer receivers
      D. Pointer receiver, because it modifies the original struct's field

      Solution

      1. Step 1: Understand effect of receiver types on struct modification

        Value receivers work on copies, so changes do not affect original struct fields.
      2. Step 2: Choose pointer receiver to modify original

        Pointer receivers allow methods to change the original struct's fields, so Reset can set seconds to zero effectively.
      3. Final Answer:

        Pointer receiver, because it modifies the original struct's field -> Option D
      4. Quick Check:

        Pointer receiver modifies original struct = A [OK]
      Hint: Use pointer receiver to change original struct fields [OK]
      Common Mistakes:
      • Using value receiver expecting original change
      • Believing methods can't have pointer receivers
      • Thinking pointer receiver can't modify fields
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard