Sobes.tech
Junior — Middle

Go tilida interfeys va boshqa dasturlash tillaridagi interfeyslar o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Go tilida interfeyslar noaniq bo‘lib, ular shunday: tur interfeysni amalga oshirayotganligini aniq ko‘rsatishi shart emas. Agar tur interfeysning barcha metodlarini o‘z ichiga olsa, u avtomatik ravishda uning amalga oshirilgan deb hisoblanadi.

Bu ko‘plab boshqa tillardan farq qiladi, u yerda sinf yoki tur interfeysni amalga oshirayotganligini aniq e’lon qilish kerak.

Misol:

package main
import "fmt"

type Reader interface {
    Read(p []byte) (n int, err error)
}

type File struct {}

func (f File) Read(p []byte) (n int, err error) {
    // metodning amalga oshirilishi
    return 0, nil
}

func main() {
    var r Reader
    var f File
    r = f // File avtomatik ravishda Readerni amalga oshiradi
    fmt.Println(r)
}