Sobes.tech
Junior — Middle

Hogyan jelezhetjük a fordítónak, hogy egy adott osztály egy adott interfészt valósít meg?

sobes.tech MI

Válasz az MI-től

Go nyelvben az interfész megvalósítása implicit módon történik: ha egy típus megvalósítja az összes módszert egy interfésznek, akkor automatikusan annak megvalósítójának számít. Nincs szükség erre kifejezetten utalni.

Példa:

package main

import "fmt"

type Speaker interface {
    Speak() string
}

type Dog struct {}

func (d Dog) Speak() string {
    return "Vau!"
}

func main() {
    var s Speaker
    d := Dog{}
    s = d // Dog megvalósítja a Speaker interfészt
    fmt.Println(s.Speak())
}

Ha kifejezetten ellenőrizni szeretnéd, hogy egy típus megvalósítja-e az interfészt, használhatod egy fordítási ellenőrzést:

var _ Speaker = (*Dog)(nil) // A fordító ellenőrzi, hogy a *Dog megvalósítja-e a Speaker-t

Így a Go-ban az interfészek automatikusan megvalósulnak, ha a szükséges módszerek elérhetőek.