"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿El orden de iteración de Go Map depende del orden de inserción de claves?

¿El orden de iteración de Go Map depende del orden de inserción de claves?

Publicado el 2025-01-14
Navegar:805

Does Go Map Iteration Order Depend on Key Insertion Order?

Orden de asignación en Go Maps

Considerando el siguiente código de Go:

package main

import "fmt"

type Vertex struct {
    Lat, Long float64
}

var m map[string]Vertex

func main() {
    m = make(map[string]Vertex)
    m["Bell Labs"] = Vertex{
        40.68433, 74.39967,
    }
    m["test"] = Vertex{
        12.0, 100,
    }
    fmt.Println(m["Bell Labs"])
    fmt.Println(m)
}

Resulta:

{40.68433 74.39967}

map[Bell Labs:{40.68433 74.39967} test:{12 100}]

Modificando la declaración del vértice de prueba moviendo "}" a la derecha 4 espacios, de la siguiente manera:

m["test"] = Vertex{
    12.0, 100,
}

Cambia la salida a:

{40.68433 74.39967}

map[test:{12 100} Bell Labs:{40.68433 74.39967}]

Explicación:

El "orden" del mapa en Go depende de la función hash aleatoria utilizada para Prevenir ataques de denegación de servicio. Según el rastreador de problemas de Go (http://code.google.com/p/go/issues/detail?id=2630), el orden de los mapas no está garantizado según la especificación.

Según la especificación , un mapa es un grupo desordenado de elementos con claves únicas. Una implementación futura podría cambiar el orden de un mapa sin modificarlo en su código. Por lo tanto, confiar en un orden de mapas específico no es una práctica recomendada en Go.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3