Sobes.tech
Junior — Middle

Cum indicăm compilatorului că o anumită clasă implementează o anumită interfață?

sobes.tech AI

Răspuns de la AI

În Go, implementarea interfeței are loc în mod implicit: dacă un tip implementează toate metodele unei interfețe, acesta este considerat automat ca implementând acea interfață. Nu este necesar să specificați explicit acest lucru.

Exemplu:

package main

import "fmt"

type Speaker interface {
    Speak() string
}

type Dog struct {}

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

func main() {
    var s Speaker
    d := Dog{}
    s = d // Dog implementează interfața Speaker
    fmt.Println(s.Speak())
}

Dacă doriți să verificați explicit dacă un tip implementează o interfață, puteți folosi o verificare de compilare:

var _ Speaker = (*Dog)(nil) // Compilatorul va verifica dacă *Dog implementează Speaker

Astfel, în Go, interfețele sunt implementate automat atunci când metodele necesare sunt prezente.