Sobes.tech
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)
}