Sobes.tech
Junior — Middle

Kāda ir atšķirība starp Golang interfeisiem un citu programmēšanas valodu interfeisiem?

sobes.tech AI

Atbilde no AI

Go valodā saskarnes tiek īstenotas pēc netiešās īstenošanas principa. Tas nozīmē, ka tips automātiski īsteno saskarni, ja tam ir visas metodes, kuras saskarne pieprasa, bez nepieciešamības to skaidri norādīt kodā (atšķirībā no Java vai C#, kur ir nepieciešams skaidri deklarēt saskarnes īstenošanu).

Tas ļauj rakstīt elastīgāku un mazāk saistītu kodu, jo tipi un saskarnes nav tieši atkarīgas viens no otra.

Piemērs:

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) {
    // lasīšanas īstenošana
    return 0, nil
}

func main() {
    var r Reader = MyReader{} // netieša saskarnes īstenošana
    fmt.Println(r)
}

Tāpat, Go valodā nav klases mantošanas, saskarnes tiek izmantotas polimorfismam un kompozīcijai, kas tās atšķir no daudziem citiem valodām.