An interface is a type that defines one or more method signatures.
Methods are not implemented, just their signature: the name, parameter types and return value type.
Something like this:
type Speaker interface {
Speak()
}
Now you could have a function accept any type that implements all the methods defined by the interface:
func SaySomething(s Speaker) {
s.Speak()
}
And we can pass it any struct that implements those methods:
type Speaker interface {
Speak()
}
type Person struct {
Name string
Age int
}
func (p Person) Speak() {
fmt.Println("Hello from " + p.Name)
}
func SaySomething(s Speaker) {
s.Speak()
}
func main() {
flavio := Person{Age: 39, Name: "Flavio"}
SaySomething(flavio)
}
Lessons in this unit:
| 0: | Introduction |
| 1: | Conditionals |
| 2: | Loops |
| 3: | Functions |
| 4: | Pointers |
| 5: | Structs |
| 6: | Methods |
| 7: | ▶︎ Interfaces |
| 8: | Set |
| 9: | Binary Search Tree |
| 10: | Go workspaces |
| 11: | Profiling |
| 12: | Go and Docker |
| 13: | Tutorial: REST API |
| 14: | Building a web crawler |