Bird
Raised Fist0
Goprogramming~5 mins

Implementing interfaces in Go - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is an interface in Go?
An interface in Go is a type that defines a set of method signatures. Any type that implements these methods satisfies the interface automatically.
Click to reveal answer
beginner
How does a type implement an interface in Go?
A type implements an interface by having all the methods that the interface requires. There is no explicit declaration needed.
Click to reveal answer
beginner
Given this interface:
type Speaker interface { Speak() string }

How would a struct implement it?
The struct must have a method Speak() that returns a string. For example:
func (p Person) Speak() string { return "Hello!" }
Click to reveal answer
intermediate
Can a pointer receiver implement an interface in Go?
Yes. If the interface method is implemented with a pointer receiver, only pointer types of that struct implement the interface. Value types do not.
Click to reveal answer
beginner
What happens if a type does not implement all methods of an interface?
The type does not satisfy the interface and cannot be assigned to a variable of that interface type.
Click to reveal answer
In Go, how do you declare that a type implements an interface?
ABy defining all methods of the interface on the type
BBy using the 'implements' keyword
CBy embedding the interface in the type
DBy importing the interface package
If an interface has method Foo(), which of these implements it?
AType with method Foo()
BType with method foo() (lowercase f)
CType with method Foo(int)
DType with no methods
What is true about pointer receivers and interfaces?
AInterfaces require value receiver methods
BValue types always implement interfaces with pointer receiver methods
CPointer receiver methods mean only pointer types implement the interface
DPointer receivers are not allowed in interfaces
Can a single type implement multiple interfaces?
ANo, a type can implement only one interface
BOnly if interfaces have no methods
COnly if interfaces are embedded
DYes, if it has all methods required by each interface
What happens if you assign a type that does not implement an interface to a variable of that interface type?
AIt works but methods are empty
BCompilation error
CRuntime panic
DIt silently ignores missing methods
Explain how a Go type implements an interface and why no explicit declaration is needed.
Think about how Go checks methods rather than declarations.
You got /3 concepts.
    Describe the difference between pointer receiver and value receiver methods in interface implementation.
    Consider which types can call the methods.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does it mean for a type in Go to implement an interface?
      easy
      A. The type can only have one method.
      B. The type inherits from the interface.
      C. The type must be explicitly declared as implementing the interface.
      D. The type has all the methods declared in the interface.

      Solution

      1. Step 1: Understand interface implementation in Go

        In Go, a type implements an interface by having all the methods the interface declares.
      2. Step 2: Compare options with Go's rules

        Go does not use inheritance or explicit declarations for interfaces; it uses method sets.
      3. Final Answer:

        The type has all the methods declared in the interface. -> Option D
      4. Quick Check:

        Interface implementation = method set match [OK]
      Hint: Check if all interface methods exist in the type [OK]
      Common Mistakes:
      • Thinking Go uses inheritance for interfaces
      • Believing explicit declaration is needed
      • Confusing interfaces with structs
      2. Which of the following is the correct way to declare that a type implements an interface in Go?
      easy
      A. type MyType struct implements MyInterface {}
      B. type MyType struct { MyInterface }
      C. No explicit declaration needed; implement all interface methods
      D. func (m MyType) implements() MyInterface {}

      Solution

      1. Step 1: Recall Go interface implementation syntax

        Go does not require explicit declarations; a type implements an interface by having all its methods.
      2. Step 2: Analyze each option

        Options A, B, and D show invalid or non-Go syntax; only C correctly states Go's implicit implementation.
      3. Final Answer:

        No explicit declaration needed; implement all interface methods -> Option C
      4. Quick Check:

        Implicit implementation = No explicit declaration needed; implement all interface methods [OK]
      Hint: Remember: Go uses implicit interface implementation [OK]
      Common Mistakes:
      • Trying to declare implementation explicitly
      • Using inheritance syntax from other languages
      • Adding interface as a struct field
      3. What will be the output of the following Go code?
      package main
      import "fmt"
      type Speaker interface {
          Speak() string
      }
      type Dog struct {}
      func (d Dog) Speak() string {
          return "Woof!"
      }
      func saySomething(s Speaker) {
          fmt.Println(s.Speak())
      }
      func main() {
          var d Dog
          saySomething(d)
      }
      medium
      A. Woof!
      B. Compilation error: Dog does not implement Speaker
      C. Runtime error
      D. No output

      Solution

      1. Step 1: Check if Dog implements Speaker

        Dog has a method Speak() string, so it implements Speaker interface.
      2. Step 2: Trace the function call saySomething(d)

        saySomething calls s.Speak(), which returns "Woof!" and prints it.
      3. Final Answer:

        Woof! -> Option A
      4. Quick Check:

        Interface method call prints "Woof!" [OK]
      Hint: Check if method signatures match interface exactly [OK]
      Common Mistakes:
      • Assuming explicit declaration is needed
      • Confusing method receiver types
      • Expecting runtime errors without reason
      4. Identify the error in this Go code that tries to implement an interface:
      package main
      import "fmt"
      type Runner interface {
          Run()
      }
      type Person struct {}
      func (p *Person) Run() {
          fmt.Println("Running")
      }
      func main() {
          var r Runner
          p := Person{}
          r = p
          r.Run()
      }
      medium
      A. Missing Run() method in Person
      B. Cannot assign Person value to Runner interface because Run() has pointer receiver
      C. Interface Runner must have a return type
      D. No error, code runs fine

      Solution

      1. Step 1: Check method receiver type

        Run() is defined with pointer receiver (*Person), so only *Person implements Runner.
      2. Step 2: Analyze assignment r = p

        Variable p is a Person value, not *Person pointer, so it does not implement Runner.
      3. Final Answer:

        Cannot assign Person value to Runner interface because Run() has pointer receiver -> Option B
      4. Quick Check:

        Pointer receiver method requires pointer type [OK]
      Hint: Match method receiver type with assigned variable type [OK]
      Common Mistakes:
      • Ignoring pointer vs value receiver difference
      • Assuming interface methods must return values
      • Thinking interface assignment always works
      5. Given these interfaces and types, which assignment is valid in Go?
      type Reader interface {
          Read() string
      }
      type Writer interface {
          Write(string)
      }
      type ReadWriter interface {
          Reader
          Writer
      }
      type File struct {}
      func (f *File) Read() string {
          return "data"
      }
      func (f *File) Write(s string) {
          // write data
      }
      func main() {
          var rw ReadWriter
          var f File
          // Which assignment is valid?
      }
      hard
      A. rw = &f
      B. rw = f
      C. rw = File{} (without methods)
      D. rw = nil

      Solution

      1. Step 1: Check if File implements ReadWriter

        File has Read() and Write(string) with pointer receivers (*File), so only *File implements ReadWriter; File value does not.
      2. Step 2: Analyze assignment options

        rw = &f is valid (&f is *File). rw = f fails (File doesn't implement). C invalid. rw = nil compiles but doesn't hold usable ReadWriter.
      3. Final Answer:

        rw = &f -> Option A
      4. Quick Check:

        Pointer receiver requires pointer type [OK]
      Hint: Pointer receiver methods mean only pointer type implements interface [OK]
      Common Mistakes:
      • Thinking value type implements pointer receiver interface
      • Assigning nil to interface without initialization
      • Confusing interface embedding with inheritance
      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