假设我们有一个map [int]字符串,我们想要像这样定义它:
var a map [int] string = { 1:“一些” 3:“价值” 4:“维持” 7:“手动” //更多100个条目……}我想要 …
最好的办法是将有序值存储为切片,然后使用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 }
在上运行它 去游乐场 。
你可以改变 idxToKey 成为你想要的任何转变。我已经使用了你在这种情况下给出的那个,但它可以是任何东西。这个论点在你通常把它放在哪里 iota 关键词。
idxToKey
iota
一种方法是拥有所有单词的数组/切片并循环通过类似于此;
var words []string var a map[int]string for i, v := range words { a[1 << 1 + i] = v }