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 :
-
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. -
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. -
Passage de
nilà l'interface Si on passe à l'interface une valeurnild'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.