Sobes.tech
Junior — Middle

Kaip parodyti kompiliatoriui, kad tam tikras klasė įgyvendina tam tikrą sąsają?

sobes.tech AI

Atsakymas iš AI

Go kalboje sąsajos įgyvendinimas vyksta neaiškiai: jei tipas įgyvendina visas sąsajos metodus, jis automatiškai laikomas įgyvendinančiu tą sąsają. Tam nereikia aiškiai nurodyti.

Pavyzdys:

package main

import "fmt"

type Speaker interface {
    Speak() string
}

type Dog struct {}

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

func main() {
    var s Speaker
    d := Dog{}
    s = d // Dog įgyvendina Speaker sąsają
    fmt.Println(s.Speak())
}

Jei norite aiškiai patikrinti, ar tipas įgyvendina sąsają, galite naudoti kompiliatoriaus patikrinimą:

var _ Speaker = (*Dog)(nil) // Kompiliatorius patikrins, ar *Dog įgyvendina Speaker

Taip, Go kalboje sąsajos įgyvendinamos automatiškai, jei yra reikalingi metodai.