"GoLang" Diccionario Mapa

mapEs un elemento de la colección desordenada de elementos a que se refiere como un grupo value, el otro grupo es un índice de clave única key. Sin inicializar mapvalor nil. map Es un tipo de referencia, se puede utilizar la siguiente declaración:

var map1 map[keytype]valuetype
var map1 map[string]int

[keytype]Y valuetypeentre los espacios están permitidos, pero los espacios gofmt removidos

Cuando fue declarado no necesita conocer mapla longitud mapes de crecimiento dinámico.

Sin inicializar maplos valores son nil.

puede ser usado puede ser cualquier tecla ==o !=tipo de operación de operadores de comparación, tales como string, int, float. Por lo tanto arrays, rebanadas, y no como una estructura clave (una estructura que contiene una matriz de rodajas no como la clave, que comprende sólo el incorporado en los tipos structque se pueden utilizar como una clave), tipo, pero el puntero y puede interactuar . Si el uso como la estructura clave puede ser proporcionado Key()y Hash()métodos, de modo que la llave puede ser calculado únicamente por el número de dominio o estructura de cadena.

valor puede ser cualquier tipo; mediante el uso de un tipo de interfaz vacía, podemos almacenar cualquier valor, pero el uso de este tipo como un tipo de valor tiene que hacer primero afirmación.

Mapa consideración pasado a la función es muy pequeño: 4 bytes en las máquinas de 32 bits, 8 bytes en una máquina de 64 bits, independientemente de la cantidad de datos se almacena en realidad. Al observar el valor de clave del mapa es muy rápido, mucho más rápido que mirada lineal, pero aún lee directamente en el índice de la matriz y el tramo más lento que 100 veces, de modo que si se preocupan por el rendimiento, entonces se recomienda a rodajas utilizar para resolver problema.

Si key1 es map1 la clave, por lo map1[key1]que el correspondiente key1 valor, los mismos símbolos que si el índice de matriz (array puede ser visto como una simple forma de mapa, clave es un número entero de cero).

Así v := map1[key1]key1 valor correspondiente puede ser asignado a v; key1 si no está presente en el mapa, a continuación, v se asigna al tipo de valor nulo de map1.

Comúnmente usados len(map1)maneras de obtener el mapa número par en este número son retráctiles, ya que el mapa de pares se pueden añadir de forma dinámica y se eliminan en tiempo de ejecución.

mapa es un tipo de referencia : método de asignación de memoria puede hacer.

var map1 = make(map[keytype]valuetype, cap)

O abreviado como:

map1 := make(map[keytype]valuetype,cap)

No utilice new, siempre se utiliza makepara construirmap

Tenga en cuenta que si se utiliza el mal new()asignado una referencia a un objeto, obtendrá un puntero a una referencia nula , es equivalente a declarar una variable sin inicializar y tomando su dirección :

mapCreated := new(map[string]float32)

Luego, cuando llamamos: mapCreated["key1"] = 4.5el tiempo, el compilador se quejará:

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

Las siguientes son mapalgunas de las aplicaciones:

val, ok = map1[key1] // 第一个是key1的值,如果key1存在则ok == true,否则ok为false

delete(map1, key1) // 从map1中删除key1,如果 key1 不存在,该操作不会产生错误。

for key, value := range map1 {
    // 遍历所有键值对
}

for _, value := range map1 {
    //只关心value
}

for key := range map1 {
    // 值关心key
}

Tenga en cuenta que el mapa no está dispuesto en el orden de la clave, no se dispone de acuerdo con el valor del pedido.

El mapa predeterminado que hay trastorno, ya sea de conformidad con la clave todavía, de acuerdo con el valor por defecto no está ordenada.

Si desea asignar necesaria para clasificar la clave (o valor) a una copia de la rebanada, y luego las secciones de clasificación (con los paquetes de ordenar), a continuación, las rebanadas se pueden utilizar for-rangeun método de imprimir la totalidad de la clave y el valor.

En otro caso, es decir el intercambio de claves y el valor, esto significa que la clave de intercambio de intercambio y de valor. Si el tipo de valor del mapa se puede utilizar como el valor de la clave, y todos son únicos, a continuación, la tecla se puede revertir simplemente mediante el siguiente método.

package main
import "fmt"

var (
    barVal = map[string]int{"alpha": 34, "bravo": 56, "charlie": 23,
                            "delta": 87, "echo": 56, "foxtrot": 12,
                            "golf": 34, "hotel": 16, "indio": 87,
                            "juliet": 65, "kili": 43, "lima": 98}
)

func main() {
    invMap := make(map[int]string, len(barVal))
    for k, v := range barVal {
        invMap[v] = k
    }
    fmt.Println("inverted:")
    for k, v := range invMap {
        fmt.Printf("Key: %v, Value: %v / ", k, v)
    }
}

Supongo que te gusta

Origin www.cnblogs.com/ice-coder/p/12667929.html
Recomendado
Clasificación