Sobes.tech
Junior — Middle

Peut-on extraire une valeur d'une carte qui n'a pas encore été initialisée?

sobes.tech IA

Réponse de l'IA

En Go, si une carte (map) n'a pas été initialisée (c'est-à-dire qu'elle est égale à nil), tenter d'en extraire une valeur par clé ne provoquera pas de panic, mais renverra simplement la valeur zéro pour le type de valeur et un drapeau booléen false, indiquant que la clé est absente.

Exemple :

var m map[string]int // m == nil

value, ok := m["key"]
fmt.Println(value, ok) // Affichera : 0 false

Cependant, si vous essayez d'écrire une valeur dans une carte non initialisée, cela provoquera un panic :

m["key"] = 10 // panic : assignment to entry in nil map

Par conséquent, pour utiliser une carte en toute sécurité, vous devez l'initialiser, par exemple avec make :

m = make(map[string]int)
m["key"] = 10 // fonctionne maintenant correctement