Bird
Raised Fist0
Goprogramming~5 mins

Interface definition 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 do you define an interface in Go?
You define an interface using the type keyword followed by the interface name and the interface keyword with method signatures inside curly braces.

Example:
type Speaker interface {
    Speak() string
}
Click to reveal answer
beginner
True or False: In Go, a type must explicitly declare it implements an interface.
False. In Go, a type implements an interface implicitly by having the required methods. No explicit declaration is needed.
Click to reveal answer
intermediate
What happens if a type does not implement all methods of an interface it is assigned to?
The Go compiler will raise an error because the type does not satisfy the interface. All methods must be implemented to satisfy the interface.
Click to reveal answer
intermediate
Explain how interfaces help in Go programming.
Interfaces allow writing flexible and reusable code by defining behavior without specifying implementation. Different types can implement the same interface, enabling polymorphism.
Click to reveal answer
How do you declare an interface named 'Mover' with a method 'Move()' in Go?
Afunc Mover() interface { Move() }
Binterface Mover { Move() }
Ctype Mover struct { Move() }
Dtype Mover interface { Move() }
If a type has all methods required by an interface, what must you do to implement that interface?
ANothing, it implements automatically
BExplicitly declare it implements the interface
CEmbed the interface in the type
DUse a special keyword 'implements'
What error occurs if a type does not implement all interface methods?
ANo error, it works fine
BRuntime panic
CCompile-time error
DLinker error
Which of these is NOT true about Go interfaces?
AInterfaces specify method implementations
BInterfaces are satisfied implicitly
CInterfaces enable polymorphism
DInterfaces can hold any type that implements their methods
What keyword is used to define an interface in Go?
Ainterface
Btype
Cstruct
Dfunc
Describe how you define and use an interface in Go with a simple example.
Think about how you declare an interface and how a struct can implement it without extra keywords.
You got /4 concepts.
    Explain why interfaces are useful in Go programming and how they support flexible code design.
    Consider how interfaces let different types behave similarly without sharing code.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does an interface in Go define?
      easy
      A. A concrete type with fields and methods
      B. A variable that holds data
      C. A set of method signatures without implementation
      D. A function that returns multiple values

      Solution

      1. Step 1: Understand what an interface is

        An interface in Go specifies method signatures but does not provide their implementation.
      2. Step 2: Differentiate from other types

        Concrete types have fields and method implementations, unlike interfaces.
      3. Final Answer:

        A set of method signatures without implementation -> Option C
      4. Quick Check:

        Interface = method signatures only [OK]
      Hint: Interfaces list methods only, no code inside [OK]
      Common Mistakes:
      • Thinking interfaces hold data
      • Confusing interfaces with structs
      • Assuming interfaces implement methods
      2. Which of the following is the correct syntax to define an interface named Shape with a method Area() returning a float64?
      easy
      A. func Shape interface { Area() float64 }
      B. interface Shape { func Area() float64 }
      C. type Shape struct { Area() float64 }
      D. type Shape interface { Area() float64 }

      Solution

      1. Step 1: Recall Go interface syntax

        Interfaces are defined with the keyword type, name, then interface and method signatures inside braces.
      2. Step 2: Check each option

        type Shape interface { Area() float64 } matches correct syntax. Options B, C, and D misuse keywords or structure.
      3. Final Answer:

        type Shape interface { Area() float64 } -> Option D
      4. Quick Check:

        Correct interface syntax = type Shape interface { Area() float64 } [OK]
      Hint: Use 'type Name interface { methods }' for interfaces [OK]
      Common Mistakes:
      • Using 'interface' keyword alone without 'type'
      • Defining methods inside struct instead of interface
      • Placing 'func' keyword inside interface method
      3. What will be the output of this Go code?
      package main
      import "fmt"
      type Printer interface {
          Print()
      }
      type Document struct {
          content string
      }
      func (d Document) Print() {
          fmt.Println(d.content)
      }
      func main() {
          var p Printer
          d := Document{"Hello, Go!"}
          p = d
          p.Print()
      }
      medium
      A. Runtime panic: nil pointer dereference
      B. Hello, Go!
      C. Compilation error: cannot assign Document to Printer
      D. No output

      Solution

      1. Step 1: Check interface implementation

        Document has a method Print() matching Printer interface, so Document implements Printer.
      2. Step 2: Assign and call method

        Variable p of type Printer is assigned d (Document), then p.Print() calls Document.Print(), printing content.
      3. Final Answer:

        Hello, Go! -> Option B
      4. Quick Check:

        Interface method calls concrete method [OK]
      Hint: Assign concrete type with matching methods to interface [OK]
      Common Mistakes:
      • Thinking interface needs explicit implementation declaration
      • Expecting compile error on assignment
      • Assuming interface variable is nil
      4. Identify the error in this Go code snippet:
      type Reader interface {
          Read(p []byte) (n int, err error)
      }
      type File struct {}
      func (f File) Read() (int, error) {
          return 0, nil
      }
      medium
      A. Method Read has wrong signature, missing parameter
      B. File does not implement Reader because it lacks Read method
      C. Interface Reader cannot have methods with parameters
      D. No error, code is correct

      Solution

      1. Step 1: Compare method signatures

        Reader interface expects Read with parameter []byte and two return values.
      2. Step 2: Check File's Read method

        File's Read method has no parameters, so signature does not match interface.
      3. Final Answer:

        Method Read has wrong signature, missing parameter -> Option A
      4. Quick Check:

        Method signature must match interface [OK]
      Hint: Method signatures must exactly match interface methods [OK]
      Common Mistakes:
      • Ignoring method parameters in implementation
      • Assuming method name alone is enough
      • Thinking interface methods can't have parameters
      5. Given these interfaces and types:
      type Reader interface {
          Read(p []byte) (n int, err error)
      }
      type Writer interface {
          Write(p []byte) (n int, err error)
      }
      type ReadWriter interface {
          Reader
          Writer
      }
      type MyFile struct {}
      func (f MyFile) Read(p []byte) (int, error) {
          return len(p), nil
      }
      func (f MyFile) Write(p []byte) (int, error) {
          return len(p), nil
      }

      Which statement is true about MyFile and ReadWriter?
      hard
      A. MyFile implements ReadWriter because it has both Read and Write methods
      B. MyFile only implements Reader, not ReadWriter
      C. MyFile does not implement any interface
      D. ReadWriter cannot embed other interfaces

      Solution

      1. Step 1: Understand interface embedding

        ReadWriter embeds Reader and Writer, so it requires both methods.
      2. Step 2: Check MyFile methods

        MyFile has both Read and Write methods matching signatures.
      3. Step 3: Confirm implementation

        Since MyFile has all required methods, it implements ReadWriter.
      4. Final Answer:

        MyFile implements ReadWriter because it has both Read and Write methods -> Option A
      5. Quick Check:

        Embedded interfaces require all methods [OK]
      Hint: Embedded interfaces combine methods; implement all to satisfy [OK]
      Common Mistakes:
      • Thinking embedding interfaces is invalid
      • Assuming partial method implementation suffices
      • 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