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, интерфейсҳо автоматӣ иҷро мешаванд, вақте ки усулҳои зарурӣ мавҷуданд.