Junior — Middle
Môžete vysvetliť, čo sú rozhrania v jazyku Go a ako fungujú?
sobes.tech AI
Odpoveď od AI
V jazyku Go je rozhranie súbor metód, ktoré musí typ implementovať, aby bol považovaný za kompatibilný s týmto rozhraním. Rozhrania umožňujú opisovať správanie bez určenia konkrétnej implementácie, čo podporuje polymorfizmus.
Vlastnosti rozhraní v Go:
- Nepriama implementácia: typ sa považuje za implementujúci rozhranie, ak má všetky metódy rozhrania, bez nutnosti ich explicitného deklarovania.
- Rozhranie môže obsahovať jednu alebo viacero metód.
- Premenná typu rozhranie môže obsahovať hodnotu akéhokoľvek typu, ktorý toto rozhranie implementuje.
Príklad:
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct{}
func (d Dog) Speak() string {
return "Hav"
}
type Cat struct{}
func (c Cat) Speak() string {
return "Mňau"
}
func saySomething(s Speaker) {
fmt.Println(s.Speak())
}
func main() {
d := Dog{}
c := Cat{}
saySomething(d) // Výstup: Hav
saySomething(c) // Výstup: Mňau
}
Týmto spôsobom umožňujú rozhrania písanie flexibilného a rozšíriteľného kódu, pracujúceho na abstrakciách namiesto na konkrétnych typoch.