Sobes.tech
Junior — Middle

Go тилиндеги интерфейс кандай айырмаланат жана анын кандай өзгөчөлүктөрүн билүү керек?

sobes.tech AI

AIден жооп

Go тилинде интерфейс — бул белгилүү бир тип аткаруусу керек болгон методдордун жыйындысы, ал ошол интерфейске ылайык деп эсептелет. Go тилиндеги интерфейстердин өзгөчөлүктөрү:

  • Жасалма ишке ашыруу: бир түр, эгер ал бардык методдорду камтыса, аны ачык көрсөтүүнүн кажети жок, интерфейсти ишке ашырган деп эсептелет.
  • Интерфейстер маалымат түзүмдөрүн эмес, жүрүм-турумду сүрөттөйт.
  • Бош интерфейс (interface{}) — методсуз интерфейс, ал ар кандай түрдүн маанисин камтышы мүмкүн.
  • Интерфейстер ички интерфейстер менен биригип, бир нече интерфейстин методдорун бириктире алат.

Мисал:

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) {
    // окуу ишке ашыруу
    return 0, nil
}

func main() {
    var r Reader = MyReader{} // MyReader, Reader'ды косумчо ишке ашырат
    fmt.Println(r)
}