Junior — Middle
Quelle est la différence entre une interface vide et une interface avec une valeur nil en langage Go?
sobes.tech IA
Réponse de l'IA
En Go, une interface vide interface{} est une interface qui ne contient pas de méthodes et peut stocker une valeur de n'importe quel type. Cependant, lorsque une variable de type interface contient nil, il est important de comprendre ce que nil signifie exactement.
- Interface vide, sans valeur: une variable de type interface qui ne pointe vers aucune valeur est considérée comme nil.
- Interface avec une valeur nil: si l'interface contient un type spécifique, mais que la valeur de ce type est nil, alors l'interface elle-même n'est pas égale à nil, car elle contient des informations sur le type.
Exemple:
var i interface{} // i == nil
var p *int = nil // p == nil
i = p // i != nil, car il contient le type *int, mais la valeur est nil
fmt.Println(i == nil) // false
fmt.Println(p == nil) // true
Il est important de prendre cela en compte lors de la vérification de nil pour éviter des erreurs inattendues.