Sobes.tech
Junior — Middle

Quand en programmation une interface peut-elle avoir la valeur nil ou être indéfinie?

sobes.tech IA

Réponse de l'IA

En Go, une interface peut avoir la valeur nil ou être indéfinie dans les cas suivants :

  1. Variable d'interface non initialisée Si la variable d'interface est déclarée mais aucune valeur n'est assignée, elle est égale à nil.

  2. L'interface contient un pointeur nul En Go, une interface se compose de deux parties : le type et la valeur. Si le type est défini mais que la valeur est un pointeur nul (nil), l'interface n'est pas égale à nil, bien que la valeur interne soit absente.

  3. Passage de nil à l'interface Si on passe à l'interface une valeur nil d'un type spécifique (par exemple, (*MyStruct)(nil)), l'interface ne sera pas égale à nil, car le type est présent.

Exemple :

var i interface{} // i == nil

var p *int = nil
i = p // i != nil, car le type *int est présent, mais la valeur est nil

if i == nil {
    fmt.Println("i est nil")
} else {
    fmt.Println("i n'est pas nil")
}

Il est important de prendre cela en compte lors de vérifications contre nil pour éviter de faux positifs.