Sobes.tech
Junior — Middle

Jak wskazać kompilatorowi, że konkretna klasa implementuje określony interfejs?

sobes.tech AI

Odpowiedź od AI

W Go implementacja interfejsu odbywa się niejawnie: jeśli typ implementuje wszystkie metody interfejsu, jest automatycznie uważany za implementujący ten interfejs. Nie ma potrzeby wyraźnego wskazywania tego.

Przykład:

package main

import "fmt"

type Speaker interface {
    Speak() string
}

type Dog struct {}

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

func main() {
    var s Speaker
    d := Dog{}
    s = d // Dog implementuje interfejs Speaker
    fmt.Println(s.Speak())
}

Jeśli chcesz wyraźnie sprawdzić, czy typ implementuje interfejs, możesz użyć sprawdzenia kompilacji:

var _ Speaker = (*Dog)(nil) // Kompilator sprawdzi, czy *Dog implementuje Speaker

W ten sposób w Go interfejsy są implementowane automatycznie, gdy dostępne są odpowiednie metody.