Junior — Middle
Jaka jest różnica między interfejsem w języku Go a interfejsami w innych językach programowania?
sobes.tech AI
Odpowiedź od AI
W języku Go interfejsy różnią się tym, że są niejawne — typ nie musi jawnie wskazywać, że implementuje interfejs. Jeśli typ zawiera wszystkie metody interfejsu, jest automatycznie uważany za jego implementację.
To różni się od wielu innych języków, w których konieczne jest jawne deklarowanie, że klasa lub typ implementuje interfejs.
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 metody
return 0, nil
}
func main() {
var r Reader
var f File
r = f // File automatycznie implementuje Reader
fmt.Println(r)
}