Sobes.tech
Junior — Middle

Go tilida interfeys qanday farq qiladi va uning qanday xususiyatlarini bilish kerak?

sobes.tech AI

AIdan javob

Go tilida interfeys — bu metodlar to'plami bo'lib, bu metodlarni amalga oshirgan tur bu interfeysga mos keladi. Go'da interfeyslarning xususiyatlari:

  • Nazoratsiz amalga oshirish: tur, agar u interfeysdagi barcha metodlarga ega bo'lsa, uni aniq ko'rsatmasdan amalga oshiradi.
  • Interfeyslar ma'lumotlar tuzilmasini emas, xatti-harakatlarni tasvirlaydi.
  • Bo'sh interfeys (interface{}) — metodlar bo'lmagan interfeys bo'lib, har qanday turdagi qiymatni saqlay oladi.
  • Interfeyslar ichma-ich bo'lishi mumkin, bir nechta interfeys metodlarini birlashtirib.

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{} // MyReader, Reader'ni nazorat qilmay amalga oshiradi
    fmt.Println(r)
}