Junior — Middle
Jaký je rozdíl mezi rozhraním v jazyce Go a rozhraními v jiných programovacích jazycích?
sobes.tech AI
Odpověď od AI
V jazyce Go se rozhraní liší tím, že jsou neviditelná — typ nemusí výslovně uvádět, že implementuje rozhraní. Pokud typ obsahuje všechny metody rozhraní, je automaticky považován za jeho implementaci.
To se liší od mnoha jiných jazyků, kde je nutné výslovně deklarovat, že třída nebo typ implementuje rozhraní.
Příklad:
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) {
// implementace metody
return 0, nil
}
func main() {
var r Reader
var f File
r = f // File automaticky implementuje Reader
fmt.Println(r)
}