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 тилинде интерфейстер автоматтык түрдө ишке ашырылат, эгер керектүү ыкмалар бар болсо.