Порядок назначения в картах 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