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.