Sobes.tech
Junior — Middle

Kompilyatora necə bildirmək olar ki, müəyyən bir sinif müəyyən bir interfeysi həyata keçirir?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində interfeysin tətbiqi qeyri-rəsmi şəkildə həyata keçirilir: əgər bir növ interfeysə aid bütün metodları həyata keçirirsə, avtomatik olaraq bu interfeysi həyata keçirən kimi qəbul edilir. Bunu açıq şəkildə göstərməyə ehtiyac yoxdur.

Misal:

package main

import "fmt"

type Speaker interface {
    Speak() string
}

type Dog struct {}

func (d Dog) Speak() string {
    return "Hav!"
}

func main() {
    var s Speaker
    d := Dog{}
    s = d // Dog, Speaker interfeysini həyata keçirir
    fmt.Println(s.Speak())
}

Əgər növün interfeysi həyata keçirdiyini açıq şəkildə yoxlamaq istəyirsinizsə, kompilyasiya yoxlaması istifadə edə bilərsiniz:

var _ Speaker = (*Dog)(nil) // Kompilyator, *Dog-un Speaker-i həyata keçirdiyini yoxlayacaq

Beləliklə, Go-da interfeyslər, lazım olan metodlar mövcud olduqda avtomatik olaraq həyata keçirilir.