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.