Sobes.tech
Назад к вопросам
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. Явного указания не требуется.