Junior — Middle
Aký je vzťah medzi prázdnym rozhraním a bežným rozhraním v programovaní?
sobes.tech AI
Odpoveď od AI
V Go je prázdne rozhranie interface{} rozhranie, ktoré neobsahuje žiadne metódy. Môže ukladať hodnotu akéhokoľvek typu, pretože všetky typy implicitne implementujú prázdne rozhranie. Bežné rozhranie naopak definuje súbor metód, ktoré musí typ implementovať, aby zodpovedal tomuto rozhraniu.
Týmto spôsobom je vzťah medzi prázdnym a bežným rozhraním v Go, že prázdne rozhranie je univerzálny kontajner pre hodnoty akéhokoľvek typu, zatiaľ čo bežné rozhranie stanovuje zmluvu, ktorú musia dodržiavať konkrétne typy. Prázdne rozhranie sa často používa na ukladanie a prenos dát bez špecifického typu, zatiaľ čo bežné rozhrania slúžia na definovanie správania objektov.
Príklad:
var any interface{} = 42 // prázdne rozhranie môže ukladať akúkoľvek hodnotu
// Bežné rozhranie
type Reader interface {
Read(p []byte) (n int, err error)
}
// Typ, ktorý implementuje Reader
type File struct {}
func (f File) Read(p []byte) (int, error) {
// implementácia
return 0, nil
}
var r Reader = File{} // File implementuje rozhranie Reader