Junior — Middle
V čom sa líši rozhranie v jazyku Go a aké vlastnosti by ste mali poznať?
sobes.tech AI
Odpoveď od AI
V jazyku Go je rozhranie (interface) súbor metód, ktoré musí typ implementovať, aby bol považovaný za kompatibilný s týmto rozhraním. Charakteristiky rozhraní v Go:
- Nepriama implementácia: typ je považovaný za implementujúci rozhranie, ak má všetky metódy rozhrania, bez nutnosti ich explicitného deklarovania.
- Rozhrania opisujú správanie, nie dátové štruktúry.
- Prázdne rozhranie (
interface{}) — rozhranie bez metód, ktoré môže obsahovať hodnotu akéhokoľvek typu. - Rozhrania môžu byť vnorené, kombinujúc metódy viacerých rozhraní.
Príklad:
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) {
// implementácia čítania
return 0, nil
}
func main() {
var r Reader = MyReader{} // MyReader implicitne implementuje Reader
fmt.Println(r)
}