Sobes.tech
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 = Dog{} // Dog реализира интерфейса Speaker
    fmt.Println(s.Speak())
}

Тук Dog реализира метода Speak(), затова компилаторът счита, че Dog реализира интерфейса Speaker. Не е необходима явна декларация.