Sobes.tech
Junior — Middle

Jak naznačit překladači, že konkrétní třída implementuje určité rozhraní?

sobes.tech AI

Odpověď od AI

V jazyce Go dochází k implementaci rozhraní implicitně: pokud typ implementuje všechny metody rozhraní, je automaticky považován za jeho implementaci. Není třeba to výslovně uvádět.

Pří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 rozhraní Speaker
    fmt.Println(s.Speak())
}

Pokud chcete explicitně zkontrolovat, zda typ implementuje rozhraní, můžete použít kompilátorovou kontrolu:

var _ Speaker = (*Dog)(nil) // Kompilátor zkontroluje, že *Dog implementuje Speaker

Tímto způsobem jsou v jazyce Go rozhraní implementována automaticky, pokud jsou přítomny potřebné metody.