Go Déclarer et initialiser une carte


Exemple

Vous définissez une carte à l'aide du mot-clé map , suivi des types de ses clés et de ses valeurs:

// Keys are ints, values are ints.
var m1 map[int]int // initialized to nil

// Keys are strings, values are ints.
var m2 map[string]int // initialized to nil

Les cartes sont des types de référence et, une fois définies, elles ont une valeur nil . Écrit sur des cartes nulles paniquera et les lectures renverront toujours la valeur zéro.

Pour initialiser une carte, utilisez la fonction make :

m := make(map[string]int)

Avec la forme de make deux paramètres, il est possible de spécifier une capacité d'entrée initiale pour la carte, en remplaçant la capacité par défaut:

m := make(map[string]int, 30)

Alternativement, vous pouvez déclarer une carte, l'initialiser à sa valeur zéro, puis lui attribuer une valeur littérale plus tard, ce qui aide si vous regroupez la structure en json, produisant ainsi une carte vide au retour.

m := make(map[string]int, 0)

Vous pouvez également créer une carte et définir sa valeur initiale entre accolades ( {} ).

var m map[string]int = map[string]int{"Foo": 20, "Bar": 30}

fmt.Println(m["Foo"]) // outputs 20

Toutes les instructions suivantes entraînent la liaison de la variable à la même valeur.

// Declare, initializing to zero value, then assign a literal value.
var m map[string]int
m = map[string]int{}

// Declare and initialize via literal value.
var m = map[string]int{}

// Declare via short variable declaration and initialize with a literal value.
m := map[string]int{}

Nous pouvons également utiliser un littéral de carte pour créer une nouvelle carte avec des paires clé / valeur initiales .

Le type de clé peut être de tout type comparable ; Cela exclut notamment les fonctions, les cartes et les tranches . Le type de valeur peut être n'importe quel type, y compris les types personnalisés ou l' interface{} .

type Person struct {
    FirstName string
    LastName  string
}

// Declare via short variable declaration and initialize with make.
m := make(map[string]Person)

// Declare, initializing to zero value, then assign a literal value.
var m map[string]Person
m = map[string]Person{}

// Declare and initialize via literal value.
var m = map[string]Person{}

// Declare via short variable declaration and initialize with a literal value.
m := map[string]Person{}