Junior — Middle
Qanday qilib kompilatorga ma'lum bir sinf ma'lum bir interfeysni amalga oshirayotganligini ko'rsatish mumkin?
sobes.tech AI
AIdan javob
Go tilida interfeysning amalga oshirilishi noaniq tarzda amalga oshiriladi: agar tur interfeysning barcha metodlarini amalga oshirsa, u avtomatik ravishda bu interfeysni amalga oshiradi hisoblanadi. Bu aniq ko'rsatishni talab qilmaydi.
Misol:
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct {}
func (d Dog) Speak() string {
return "Gav!"
}
func main() {
var s Speaker
d := Dog{}
s = d // Dog, Speaker interfeysini amalga oshiradi
fmt.Println(s.Speak())
}
Agar turni aniq tekshirmoqchi bo'lsangiz, _kompilyatsiya tekshiruvi_ni ishlatishingiz mumkin:
var _ Speaker = (*Dog)(nil) // Kompilyator, *Dog, Speakerni amalga oshiradimi, tekshiradi
Shu tarzda, Go da interfeyslar, zarur metodlar mavjud bo'lsa, avtomatik ravishda amalga oshiriladi.