gpt4 book ai didi

go - Iota 在 Go map 上定义键?

转载 作者:IT王子 更新时间:2023-10-29 01:55:32 26 4
gpt4 key购买 nike

假设我们有一个 map[int]string我们想这样定义它:

var a map[int]string =  {
1: "some"
3: "value"
4: "maintained"
7: "manually"
// more 100 entries...
}

我想手动维护值,因为它们没有模式,但键有。有没有办法像我们使用 1 << 1 + iota 处理枚举值一样维护 key 列表? ?

我不是在问是否可以使用 iota 作为映射键(不幸的是它不是 AFAIK),只是如果有一种同样优雅的方法可以在定义的序列上创建键。

最佳答案

最好的办法是将有序值存储为一个 slice ,然后使用 init 函数生成映射,如下所示:

var a map[int]string
var vals = []string{
"some",
"value",
"maintained",
"manually",
}

func init() {
a = make(map[int]string)
for idx, val := range vals {
a[idxToKey(idx)] = val
}
}

func idxToKey(i int) int {
return 1<<1 + i
}

Go Playground 上运行它.

您可以将 idxToKey 更改为您想要的任何转换。在这种情况下,我使用了您提供的那个,但它可以是任何东西。该参数位于您通常放置 iota 关键字的位置。

关于go - Iota 在 Go map 上定义键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27339460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com