Junior — Middle
Aký je rozdiel medzi rozhraním v jazyku Go a rozhraniami v iných programovacích jazykoch?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa rozhrania líšia tým, že sú neviditeľné — typ nemusí výslovne uvádzať, že implementuje rozhranie. Ak typ obsahuje všetky metódy rozhrania, je automaticky považovaný za jeho implementáciu.
Toto sa líši od mnohých iných jazykov, kde je potrebné výslovne deklarovať, že trieda alebo typ implementuje rozhranie.
Prí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) {
// implementácia metódy
return 0, nil
}
func main() {
var r Reader
var f File
r = f // File automaticky implementuje Reader
fmt.Println(r)
}