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

Ако искате явно да проверите дали тип реализира интерфейс, можете да използвате проверка при компилация:

var _ Speaker = (*Dog)(nil) // Компилаторът ще провери дали *Dog реализира Speaker

По този начин, в Go, интерфейсите се реализират автоматично, когато съществуват необходимите методи.