Junior — Middle
Kdy může mít rozhraní v programování hodnotu nil nebo být nedefinované?
sobes.tech AI
Odpověď od AI
V jazyce Go může mít rozhraní hodnotu nil nebo být nedefinované v následujících případech:
-
Neinitializovaná proměnná rozhraní Pokud je proměnná rozhraní deklarována, ale není jí přiřazena žádná hodnota, je rovna
nil. -
Rozhraní obsahuje nulový ukazatel V Go se rozhraní skládá ze dvou částí: typu a hodnoty. Pokud je typ nastaven, ale hodnota je nulový ukazatel (
nil), rozhraní není rovnonil, i když vnitřní hodnota chybí. -
Předání
nildo rozhraní Pokud předáte do rozhraní hodnotunilkonkrétního typu (například(*MyStruct)(nil)), rozhraní nebude rovnonil, protože typ je přítomen.
Příklad:
var i interface{} // i == nil
var p *int = nil
i = p // i != nil, protože typ *int je přítomen, ale hodnota je `nil`
if i == nil {
fmt.Println("i je nil")
} else {
fmt.Println("i není nil")
}
Je důležité vzít v úvahu toto při kontrole na nil, aby se předešlo falešným pozitivům.