Vérifier l’existence
Découvrir l’idiome virgule-ok
Vérifier l’existence est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.
Les clés absentes renvoient la valeur zéro
Lorsque vous lisez une clé qui n'existe pas, Go renvoie la valeur zéro du type de valeur, et non une erreur. Pour int, il s'agit de 0 ; pour string, il s'agit de la chaîne vide.
package main
import "fmt"
func main() {
m := map[string]int{"a": 5}
fmt.Println(m["missing"])
}Le problème de l'ambiguïté
Si la valeur renvoyée est 0, comment savoir si la clé existe avec la valeur 0 ou si elle est simplement absente ? La valeur seule ne permet pas de le déterminer.
L'idiome virgule-vérification
L'accès à une table associative peut renvoyer deux valeurs : la valeur et un booléen. Le booléen vaut true si la clé existe. C'est l'idiome virgule-vérification.
package main
import "fmt"
func main() {
m := map[string]int{"a": 0}
val, ok := m["a"]
fmt.Println(val, ok)
}Distinguer les clés absentes
Vous pouvez maintenant faire la distinction. Une clé présente donne ok = true, même si sa valeur est la valeur zéro.
package main
import "fmt"
func main() {
m := map[string]int{"a": 0}
_, okA := m["a"]
_, okB := m["b"]
fmt.Println("a exists:", okA, "b exists:", okB)
}Vérifier avant d'agir
Un schéma courant consiste à utiliser l'idiome virgule-vérification dans un if pour n'agir que lorsque la clé est présente.
package main
import "fmt"
func main() {
prices := map[string]int{"pen": 3}
if p, ok := prices["pen"]; ok {
fmt.Println("price is", p)
} else {
fmt.Println("not found")
}
}Ignorer la valeur
Si seule l'existence d'une clé vous intéresse, utilisez l'identifiant vide _ pour la valeur.
package main
import "fmt"
func main() {
seen := map[string]bool{"x": true}
_, exists := seen["x"]
fmt.Println("x seen:", exists)
}Compter les occurrences
L'idiome virgule-vérification s'associe bien aux compteurs. Notez toutefois que, même sans ok, m[key]++ fonctionne, car une clé absente commence à zéro.
package main
import "fmt"
func main() {
counts := map[string]int{}
for _, w := range []string{"a", "b", "a"} {
counts[w]++
}
fmt.Println(counts)
}Valeurs par défaut sûres
Vous pouvez fournir une valeur de remplacement lorsqu'une clé est absente en utilisant l'idiome virgule-vérification et une variable par défaut.
package main
import "fmt"
func main() {
cfg := map[string]string{}
lang, ok := cfg["lang"]
if !ok {
lang = "en"
}
fmt.Println("lang:", lang)
}L'idiome virgule-vérification au-delà des tables associatives
La forme à deux valeurs apparaît également lors de la réception sur un canal et dans les assertions de type. Le principe reste le même : la seconde valeur indique la réussite de l'opération.
package main
import "fmt"
func main() {
var i interface{} = "hello"
s, ok := i.(string)
fmt.Println(s, ok)
}Vérifier l'appartenance à un ensemble
Les tables associatives dont les valeurs sont des booléens ou des structures vides servent souvent à suivre l'appartenance à un ensemble. L'idiome virgule-vérification permet de répondre clairement à la question : cet élément appartient-il à l'ensemble ?
package main
import "fmt"
func main() {
allowed := map[string]struct{}{"read": {}, "write": {}}
_, ok := allowed["delete"]
fmt.Println("delete allowed:", ok)
}Bonne pratique
Utilisez toujours l'idiome virgule-vérification lorsqu'une valeur zéro peut être une valeur stockée légitime. Cela supprime l'ambiguïté et clarifie l'intention.
Vérification rapide
Vous lisez val, ok := m["x"] et obtenez val = 0, ok = true. Qu'est-ce que cela signifie ?
Récapitulatif
Vérifier l'existence avec l'idiome virgule-vérification :
- Les clés absentes renvoient la valeur zéro
val, ok := m[key]indique la présence dansok- Utilisez-le chaque fois que zéro pourrait être une valeur réelle
Questions Fréquemment Posées
La leçon « Vérifier l’existence » est-elle gratuite ?
Oui — le texte complet de « Vérifier l’existence » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Vérifier l’existence » ?
Découvrir l’idiome virgule-ok Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Go Academy ?
Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Vérifier l’existence » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?
Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Fonctionnement interne des maps
- Vérifier l’existence
- Les maps comme ensembles
- Itération et ordre