Sobes.tech
Junior — Middle

Kuo skiriasi Golang interfeisai nuo kitų programavimo kalbų interfeisų?

sobes.tech AI

Atsakymas iš AI

Go kalboje są interfeisai įgyvendinami pagal netiesioginės įgyvendinimo principą. Tai reiškia, kad tipas automatiškai įgyvendina interfeisą, jei turi visus metodus, kuriuos reikalauja interfeisas, be būtinybės tai aiškiai nurodyti kode (skirtingai nuo Java ar C#, kur reikia aiškiai deklaruoti interfeiso įgyvendinimą).

Tai leidžia rašyti lankstesnį ir mažiau susietą kodą, nes tipai ir interfeisai nėra tiesiogiai priklausomi vienas nuo kito.

Pavyzdys:

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) {
    // skaitymo įgyvendinimas
    return 0, nil
}

func main() {
    var r Reader = MyReader{} // netiesioginė interfeiso įgyvendinimas
    fmt.Println(r)
}

Taip pat, Go kalboje nėra klasių paveldėjimo, interfeisai naudojami polimorfizmui ir kompozicijai, kas juos skiria nuo daugelio kitų kalbų.