Sobes.tech
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:

  1. Neinitializovaná proměnná rozhraní Pokud je proměnná rozhraní deklarována, ale není jí přiřazena žádná hodnota, je rovna nil.

  2. 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í rovno nil, i když vnitřní hodnota chybí.

  3. Předání nil do rozhraní Pokud předáte do rozhraní hodnotu nil konkrétního typu (například (*MyStruct)(nil)), rozhraní nebude rovno nil, 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.