Go Dichiarazione e inizializzazione di una mappa


Esempio

Definisci una mappa usando la map parole chiave, seguita dai tipi delle sue chiavi e dai suoi valori:

// 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

Le mappe sono tipi di riferimento e, una volta definiti, hanno un valore zero pari a nil . Scrive su zero le mappe andranno nel panico e le letture restituiranno sempre il valore zero.

Per inizializzare una mappa, usa la funzione make :

m := make(map[string]int)

Con la forma a due parametri di make , è possibile specificare una capacità di immissione iniziale per la mappa, ignorando la capacità predefinita:

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

In alternativa, è possibile dichiarare una mappa, inizializzarla sul suo valore zero e quindi assegnarvi un valore letterale in seguito, il che aiuta se si effettua il marshalling della struct in json producendo quindi una mappa vuota al momento del ritorno.

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

Puoi anche creare una mappa e impostare il suo valore iniziale con parentesi graffe ( {} ).

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

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

Tutte le seguenti istruzioni fanno sì che la variabile sia associata allo stesso valore.

// 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{}

Possiamo anche usare una mappa letterale per creare una nuova mappa con alcune coppie chiave / valore iniziali .

Il tipo di chiave può essere di qualsiasi tipo comparabile ; in particolare, questo esclude funzioni, mappe e sezioni . Il tipo di valore può essere di qualsiasi tipo, inclusi i tipi personalizzati o 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{}