Sobes.tech
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.