Sobes.tech
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.