Junior — Middle
Как да посочим на компилатора, че конкретен клас реализира определен интерфейс?
sobes.tech AI
Отговор от AI
В Go реализирането на интерфейс става неявно: ако тип реализира всички методи на интерфейс, той автоматично се счита за реализиращ този интерфейс. Не е необходимо да се посочва явно.
Пример:
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct {}
func (d Dog) Speak() string {
return "Га!"
}
func main() {
var s Speaker
d := Dog{}
s = d // Dog реализира интерфейса Speaker
fmt.Println(s.Speak())
}
Ако искате явно да проверите дали тип реализира интерфейс, можете да използвате проверка при компилация:
var _ Speaker = (*Dog)(nil) // Компилаторът ще провери дали *Dog реализира Speaker
По този начин, в Go, интерфейсите се реализират автоматично, когато съществуват необходимите методи.