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 中,不推荐依赖特定的映射顺序。
以上是Go Map 迭代顺序取决于键插入顺序吗?的详细内容。更多信息请关注PHP中文网其他相关文章!