Les cartes dans GO sont un type de données associatif intégré qui vous permet de stocker des paires de valeurs clés. Ils sont mis en œuvre sous forme de tables de hachage, offrant un accès efficace aux valeurs qui y sont stockées. Les cartes ne sont pas ordonnées, ce qui signifie que l'ordre des clés et des valeurs peut changer pendant l'exécution du programme.
Pour créer une carte en Go, vous utilisez la fonction make
avec le mot clé map
. La syntaxe pour déclarer une carte est la suivante:
<code class="go">myMap := make(map[keyType]valueType)</code>
Ici, keyType
est le type des clés, et valueType
est le type des valeurs. Par exemple, pour créer une carte des chaînes aux entiers:
<code class="go">ages := make(map[string]int)</code>
Vous pouvez également initialiser une carte avec des valeurs au moment de la déclaration à l'aide d'un littéral composite:
<code class="go">ages := map[string]int{ "Alice": 30, "Bob": 25, }</code>
Pour ajouter une paire de valeurs de clé à une carte, vous utilisez la syntaxe suivante:
<code class="go">ages["Charlie"] = 35</code>
Pour récupérer une valeur à partir d'une carte, vous utilisez la clé:
<code class="go">age := ages["Alice"]</code>
Si vous essayez de récupérer une valeur pour une clé qui n'existe pas dans la carte, vous obtiendrez la valeur zéro pour le type de valeur. Pour vérifier si une clé existe avant d'accéder à sa valeur, vous pouvez utiliser l'affectation à plusieurs valeurs:
<code class="go">age, exists := ages["David"] if !exists { fmt.Println("David is not in the map") }</code>
Pour supprimer une paire de valeurs de clé à partir d'une carte, vous utilisez la fonction delete
:
<code class="go">delete(ages, "Bob")</code>
L'utilisation de cartes dans la programmation GO offre plusieurs avantages clés:
len
pour obtenir le nombre d'entrées, et delete
pour supprimer les entrées. Pour itérer efficacement sur une carte en Go, vous pouvez utiliser le mot clé de range
dans une boucle for
boucle. Le mot clé range
vous permet d'accéder à la fois à la clé et à la valeur de chaque entrée dans la carte. Voici un exemple:
<code class="go">ages := map[string]int{ "Alice": 30, "Bob": 25, "Charlie": 35, } for key, value := range ages { fmt.Printf("Name: %s, Age: %d\n", key, value) }</code>
Cela irara sur toutes les paires de valeurs clés de la carte, en imprimant chaque nom et chaque âge. Notez que l'ordre dans lequel les paires de valeurs clés sont visitées n'est pas garantie, car les cartes sont intrinsèquement non ordonnées.
Si vous avez seulement besoin d'itérer les clés, vous pouvez utiliser la syntaxe suivante:
<code class="go">for key := range ages { fmt.Printf("Name: %s\n", key) }</code>
Si vous avez besoin d'itérer uniquement les valeurs, vous pouvez utiliser l'identifiant vierge _
pour la clé:
<code class="go">for _, value := range ages { fmt.Printf("Age: %d\n", value) }</code>
Lorsque vous travaillez avec des cartes dans GO, il y a plusieurs erreurs courantes qui doivent être évitées:
Ne pas vérifier l'existence clé : lors de la récupération d'une valeur à partir d'une carte, il est facile d'oublier de vérifier si la clé existe. Ne pas le faire peut entraîner des valeurs zéro inattendues utilisées dans votre code.
<code class="go">// Incorrect age := ages["David"] // If "David" doesn't exist, age will be 0 // Correct age, exists := ages["David"] if !exists { fmt.Println("David is not in the map") }</code>
Écrit simultané : L'écriture sur une carte de plusieurs goroutines sans synchronisation appropriée peut conduire à des conditions de course et à un comportement non défini.
<code class="go">// Incorrect go func() { ages["Eve"] = 40 }() go func() { ages["Frank"] = 45 }() // Correct var mutex sync.Mutex go func() { mutex.Lock() ages["Eve"] = 40 mutex.Unlock() }() go func() { mutex.Lock() ages["Frank"] = 45 mutex.Unlock() }()</code>
L'utilisation de types non correspondables comme des clés : les cartes nécessitent des clés pour être comparables, donc l'utilisation de types non équipés comme des tranches ou des cartes en tant que touches entraînera une erreur de compilation.
<code class="go">// Incorrect invalidMap := make(map[[]int]int) // Will not compile // Correct validMap := make(map[string]int)</code>
Outlorer l'initialisation de la carte : essayer d'utiliser une carte sans initialisation appropriée entraînera une panique d'exécution.
<code class="go">// Incorrect var ages map[string]int ages["Alice"] = 30 // This will panic // Correct ages := make(map[string]int) ages["Alice"] = 30</code>
En évitant ces erreurs courantes, vous pouvez utiliser des cartes efficacement et en toute sécurité dans vos programmes GO.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!