首页  >  文章  >  后端开发  >  Go Map 迭代顺序取决于键插入顺序吗?

Go Map 迭代顺序取决于键插入顺序吗?

Barbara Streisand
Barbara Streisand原创
2024-11-22 09:11:11439浏览

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 中,不推荐依赖特定的映射顺序。

以上是Go Map 迭代顺序取决于键插入顺序吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn