Junior — Middle
Golang'dagi interfeyslar boshqa dasturlash tillaridagi interfeyslar bilan qanday farq qiladi?
sobes.tech AI
AIdan javob
Go tilida interfeyslar noaniq amalga oshirish tamoyili bo'yicha amalga oshiriladi. Bu shuni anglatadiki, tur avtomatik ravishda interfeysni amalga oshiradi, agar u interfeys talab qiladigan barcha metodlarga ega bo'lsa, kodda aniq ko'rsatmasdan (Java yoki C# kabi tillarda, interfeysni aniq e'lon qilish kerak bo'lsa).
Bu kodni yanada moslashuvchan va kamroq bog'langan qilish imkonini beradi, chunki turlar va interfeyslar bir-biriga to'g'ridan-to'g'ri bog'liq emas.
Misol:
package main
import "fmt"
type Reader interface {
Read(p []byte) (n int, err error)
}
type MyReader struct{}
func (r MyReader) Read(p []byte) (n int, err error) {
// o'qish amalga oshirilishi
return 0, nil
}
func main() {
var r Reader = MyReader{} // noaniq interfeys amalga oshirilishi
fmt.Println(r)
}
Shuningdek, Go tilida sinf merosxo'rligi yo'q, interfeyslar polimorfizm va kompozitsiya uchun ishlatiladi, bu ularni ko'plab boshqa tillardan ajratib turadi.