«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Зависит ли порядок итерации карты Go от порядка вставки ключей?

Зависит ли порядок итерации карты Go от порядка вставки ключей?

Опубликовано 14 января 2025 г.
Просматривать:728

Does Go Map Iteration Order Depend on Key Insertion Order?

Порядок назначения в картах Go

Учитывая следующий код 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)
}

Выводит:

{40.68433 74.39967}

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

Изменение объявления тестовой вершины путем перемещения правых "}" на 4 пробела следующим образом:

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

Изменяет вывод на:

{40.68433 74.39967}

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

Объяснение:

"Порядок" отображения в Go зависит от рандомизированной хэш-функции, используемой для предотвратить атаки типа «отказ в обслуживании». Согласно системе отслеживания проблем Go (http://code.google.com/p/go/issues/detail?id=2630), порядок карт не гарантируется в соответствии со спецификацией.

Согласно спецификации , карта — это неупорядоченная группа элементов с уникальными ключами. Будущая реализация может изменить порядок карты, не изменяя ее в вашем коде. Поэтому полагаться на определенный порядок карт в Go не рекомендуется.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3