En Go interface definerer et sæt metodesignaturer — en kontrakt for adfærd. Afgørende er, at interfaces bliver opfyldt implicit: enhver type der har disse metoder opfylder automatisk interfacet, uden nogen eksplicit "implements"-erklæring. Denne strukturelle, duck-typing-tilgang er karakteristisk og kraftfuld.
Definition og implicit implementering af et interface
Speaker {
Speak()
}
Dog {}
Speak() { }
Cat {}
Speak() { }
s Speaker = Dog{}
s.Speak()
