Sobes.tech
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.