Назад к вопросам
Junior — Middle
113
Каким образом указать компилятору, что конкретный класс реализует определённый интерфейс?
Компании, где спрашивали
Digital Spirit
Ответ от нейросети
sobes.tech 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 интерфейсы реализуются автоматически при наличии нужных методов.