Sobes.tech
Junior — Middle

Ako naznačiť prekladaču, že konkrétna trieda implementuje určitý rozhranie?

sobes.tech AI

Odpoveď od AI

V Go, implementácia rozhrania prebieha implicitne: ak typ implementuje všetky metódy rozhrania, je automaticky považovaný za jeho implementáciu. Nie je potrebné to výslovne uvádzať.

Príklad:

package main

import "fmt"

type Speaker interface {
    Speak() string
}

type Dog struct {}

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

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

Ak chcete explicitne skontrolovať, či typ implementuje rozhranie, môžete použiť kontrolu kompilácie:

var _ Speaker = (*Dog)(nil) // Kompilátor skontroluje, či *Dog implementuje Speaker

Týmto spôsobom sú v Go rozhrania implementované automaticky, ak sú prítomné potrebné metódy.