Junior — Middle
Koja je razlika između interfejsa u Golang-u i u drugim programskim jezicima?
sobes.tech АИ
Одговор од АИ
U Go, interfejsi se implementiraju prema principu implicitne implementacije. To znači da tip automatski implementira interfejs ako ima sve metode koje interfejs zahteva, bez potrebe da to eksplicitno navodi u kodu (za razliku od Jave ili C#, gde je potrebno eksplicitno deklarisati implementaciju interfejsa).
Ovo omogućava pisanje fleksibilnijeg i manje povezivog koda, jer se tipovi i interfejsi ne zavise direktno jedan od drugog.
Primer:
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) {
// implementacija čitanja
return 0, nil
}
func main() {
var r Reader = MyReader{} // implicitna implementacija interfejsa
fmt.Println(r)
}
Takođe, u Go nema nasleđivanja klasa, interfejsi se koriste za polimorfizam i kompoziciju, što ih razlikuje od mnogih drugih jezika.