Go Maps 中的赋值顺序
考虑以下 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