Maison  >  Article  >  développement back-end  >  Qu'est-ce que la carte en golang

Qu'est-ce que la carte en golang

青灯夜游
青灯夜游original
2023-01-13 11:07:133881parcourir

En Golang, la carte est une structure de données spéciale. Il s'agit d'une collection non ordonnée sous forme de clé (index) et de valeur (valeur). Elle peut également être appelée tableau associatif ou dictionnaire ; valeurs. La structure idéale est une structure de données qui peut trouver rapidement la valeur correspondante en fonction d'une clé donnée.

Qu'est-ce que la carte en golang

L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.

En langage Go, map est une structure de données spéciale, une collection non ordonnée de paires d'éléments (paire). Pair correspond à une clé (index) et une valeur (valeur), cette structure est donc également appelée tableau associatif ou dictionnaire. , c'est une structure idéale qui permet de trouver rapidement des valeurs Étant donné une clé, la valeur correspondante peut être rapidement trouvée.

La clé de la carte de Golang peut être n'importe quel type de données pouvant être comparé en utilisant ==, tel que int, string, bool, etc., et la valeur peut être n'importe quel type.

map est une structure de données non ordonnée, donc la même carte peut être obtenue dans un ordre incohérent à chaque fois qu'elle est parcourue.

map concept

map est un type référence et peut être déclaré de la manière suivante :

var mapname map[keytype]valuetype

où :

  • mapname est le nom de la variable de la carte.

  • keytype est le type de clé.

  • valuetype est le type de valeur correspondant à la clé.

Astuce : les espaces sont autorisés entre [keytype] et valuetype.

Vous n'avez pas besoin de connaître la longueur de la carte lors de sa déclaration, car la carte peut croître dynamiquement. La valeur d'une carte non initialisée est nulle. Vous pouvez utiliser la fonction len() pour obtenir le nombre de paires. la carte.

【Exemple】

package main
import "fmt"
func main() {
    var mapLit map[string]int
    //var mapCreated map[string]float32
    var mapAssigned map[string]int
    mapLit = map[string]int{"one": 1, "two": 2}
    mapCreated := make(map[string]float32)
    mapAssigned = mapLit
    mapCreated["key1"] = 4.5
    mapCreated["key2"] = 3.14159
    mapAssigned["two"] = 3
    fmt.Printf("Map literal at \"one\" is: %d\n", mapLit["one"])
    fmt.Printf("Map created at \"key2\" is: %f\n", mapCreated["key2"])
    fmt.Printf("Map assigned at \"two\" is: %d\n", mapLit["two"])
    fmt.Printf("Map literal at \"ten\" is: %d\n", mapLit["ten"])
}

Résultat de sortie :

Quest-ce que la carte en golang

Dans l'exemple, mapLit montre l'utilisation du format {key1 : value1, key2 : value2} pour initialiser la carte, tout comme les tableaux et les structures.

Comment mapCreated dans le code ci-dessus est créémapCreated := make(map[string]float)等价于mapCreated := map[string]float{}.

mapAssigned est une référence à mapList, et les modifications apportées à mapAssigned affecteront également la valeur de mapLit.

Remarque : vous pouvez utiliser make(), mais vous ne pouvez pas utiliser new() pour construire une carte. Si vous utilisez new() de manière incorrecte pour allouer un objet de référence, vous obtiendrez un pointeur de référence nul, ce qui équivaut à déclarer un objet de référence. variable non initialisée. Et prenez son adresse :

mapCreated := new(map[string]float)

Ensuite, lorsque nous appellerons mapCreated["key1"] = 4.5, le compilateur signalera une erreur :

invalid operation: mapCreated["key1"] (index of type *map[string]float).

map capacité

est différente des tableaux, map peut être basé sur la nouvelle La valeur-clé ajoutée évolue dynamiquement, elle n'a donc pas de longueur fixe ni de limite maximale, mais vous pouvez également choisir d'indiquer la capacité initiale de la carte. Le format est le suivant :

make(map[keytype]valuetype, cap)

Par exemple :

map2 := make(map[string]float, 100)

Lorsque la carte atteint la limite de capacité supérieure, si une nouvelle valeur-clé est ajoutée, la taille de la carte sera automatiquement augmentée de 1. Par conséquent, pour des raisons de performances, pour les grandes cartes ou les cartes qui s'étendront rapidement, même si la capacité n’est connue qu’approximativement, il est préférable de l’indiquer au préalable.

Voici un exemple spécifique de carte, qui mappe les gammes musicales à l'audio correspondant :

noteFrequency := map[string]float32 {
"C0": 16.35, "D0": 18.35, "E0": 20.60, "F0": 21.83,
"G0": 24.50, "A0": 27.50, "B0": 30.87, "A4": 440}

[Recommandations associées : Tutoriel vidéo Go, Enseignement de la programmation]

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn