Назад к вопросам
Junior — Middle
75
Каким образом указывается компилятору, что класс реализует определённый интерфейс?
Компании, где спрашивали
Digital Spirit
Ответ от нейросети
sobes.tech AI
В Go реализация интерфейса происходит неявно: класс (точнее, тип) считается реализующим интерфейс, если он содержит все методы, объявленные в интерфейсе.
То есть, чтобы указать компилятору, что тип реализует интерфейс, достаточно реализовать все методы интерфейса с нужной сигнатурой.
Пример:
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct {}
func (d Dog) Speak() string {
return "Woof!"
}
func main() {
var s Speaker = Dog{} // Dog реализует интерфейс Speaker
fmt.Println(s.Speak())
}
Здесь Dog реализует метод Speak(), поэтому компилятор считает, что Dog реализует интерфейс Speaker. Явного указания не требуется.