Senior
Czym są interfejsy w Go? Jak typy implementują interfejsy?
sobes.tech AI
Odpowiedź od AI
W języku Go interfejs to zbiór metod opisujących zachowanie. Typ implementuje interfejs, jeśli zawiera wszystkie metody zadeklarowane w interfejsie, bez konieczności jawnego wskazywania implementacji interfejsu.
Nazywa się to niejawną implementacją interfejsów. Dzięki temu można pisać bardziej elastyczny i rozszerzalny kod.
Przykład:
package main
import "fmt"
type Reader interface {
Read(p []byte) (n int, err error)
}
type File struct {}
func (f File) Read(p []byte) (n int, err error) {
// implementacja czytania
return 0, nil
}
func main() {
var r Reader
f := File{}
r = f // File implementuje Reader
fmt.Println(r)
}
Tutaj typ File implementuje interfejs Reader, ponieważ posiada metodę Read o odpowiedniej sygnaturze.