Sobes.tech
Junior — Middle

Можете ли објаснити шта су интерфејси у језику Go и како функционишу?

sobes.tech АИ

Одговор од АИ

U Go-u, interfejs je skup metoda koje tip mora implementirati da bi se smatralo da je kompatibilan sa tim interfejsom. Interfejsi omogućavaju opisivanje ponašanja bez specificiranja konkretne implementacije, što podstiče polimorfizam.

Karakteristike interfejsa u Go-u:

  • Implicitna implementacija: tip se smatra da implementira interfejs ako poseduje sve metode interfejsa, bez eksplicitne deklaracije.
  • Interfejs može sadržavati jednu ili više metoda.
  • Promenljiva tipa interfejs može čuvati vrednost bilo kog tipa koji implementira taj interfejs.

Primer:

package main
import "fmt"

type Speaker interface {
    Speak() string
}

type Dog struct{}
func (d Dog) Speak() string {
    return "Hau"
}

type Cat struct{}
func (c Cat) Speak() string {
    return "Mijau"
}

func saySomething(s Speaker) {
    fmt.Println(s.Speak())
}

func main() {
    d := Dog{}
    c := Cat{}
    saySomething(d) // Ispis: Hau
    saySomething(c) // Ispis: Mijau
}

Na ovaj način, interfejsi omogućavaju pisanje fleksibilnog i proširivog koda, radeći na apstrakcijama umesto na konkretnim tipovima.