Junior — Middle
Jaka jest różnica między interfejsami w Golang a innymi językami programowania?
sobes.tech AI
Odpowiedź od AI
W Go interfejsy są implementowane zgodnie z zasadą niejawnej implementacji. Oznacza to, że typ automatycznie implementuje interfejs, jeśli posiada wszystkie metody, które interfejs wymaga, bez konieczności jawnego deklarowania tego w kodzie (w przeciwieństwie do Java lub C#, gdzie trzeba jawnie deklarować implementację interfejsu).
Pozwala to na pisanie bardziej elastycznego i mniej powiązanego kodu, ponieważ typy i interfejsy nie zależą od siebie bezpośrednio.
Przykład:
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) {
// implementacja czytania
return 0, nil
}
func main() {
var r Reader = MyReader{} // niejawna implementacja interfejsu
fmt.Println(r)
}
Również w Go nie ma dziedziczenia klas, interfejsy są używane do polimorfizmu i kompozycji, co odróżnia je od wielu innych języków.