Go Declarar e inicializar un mapa


Ejemplo

Usted define un mapa usando el map palabras clave, seguido de los tipos de sus claves y sus valores:

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

Los mapas son tipos de referencia y, una vez definidos, tienen un valor cero de nil . Las escrituras en mapas nulos entrarán en pánico y las lecturas siempre devolverán el valor cero.

Para inicializar un mapa, use la función make :

m := make(map[string]int)

Con la forma de make de dos parámetros, es posible especificar una capacidad de entrada inicial para el mapa, anulando la capacidad predeterminada:

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

Alternativamente, puede declarar un mapa, inicializarlo a su valor cero, y luego asignarle un valor literal más tarde, lo que ayuda si calibra la estructura en json para producir un mapa vacío en el retorno.

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

También puede hacer un mapa y establecer su valor inicial entre llaves ( {} ).

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

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

Todas las siguientes declaraciones dan como resultado que la variable se enlaza al mismo valor.

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

También podemos usar un mapa literal para crear un nuevo mapa con algunos pares de clave / valor iniciales .

El tipo de clave puede ser cualquier tipo comparable ; En particular, esto excluye funciones, mapas y segmentos . El tipo de valor puede ser cualquier tipo, incluidos los tipos personalizados o la 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{}