Iota在Go地图上定义关键点?
假设我们有一个Iota在Go地图上定义关键点?,go,iota,Go,Iota,假设我们有一个map[int]字符串,我们想这样定义它: var a map[int]string = { 1: "some" 3: "value" 4: "maintained" 7: "manually" // more 100 entries... } var a map[int]string var vals = []string{ "some", "value", "maintained", "manually", } func init
map[int]字符串
,我们想这样定义它:
var a map[int]string = {
1: "some"
3: "value"
4: "maintained"
7: "manually"
// more 100 entries...
}
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
}
我想手动维护这些值,因为它们没有模式,但键有。是否有一种方法可以像我们使用
1处理枚举值一样维护键列表?一种方法是使用一个包含所有单词的数组/切片,并通过类似于此的循环
var words []string
var a map[int]string
for i, v := range words {
a[1 << 1 + i] = v
}
var words[]字符串
var一个映射[int]字符串
对于i,v:=范围词{
[1一种方法是使用一个包含所有单词的数组/切片,并循环使用类似的方法
var words []string
var a map[int]string
for i, v := range words {
a[1 << 1 + i] = v
}
var words[]字符串
var一个映射[int]字符串
对于i,v:=范围词{
a[1您最好将有序值存储为一个切片,然后使用init函数生成如下映射:
var a map[int]string = {
1: "some"
3: "value"
4: "maintained"
7: "manually"
// more 100 entries...
}
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
}
var映射[int]字符串
var VAL=[]字符串{
“一些”,
“价值”,
“维持”,
“手动”,
}
func init(){
a=生成(映射[int]字符串)
对于idx,val:=范围val{
a[idxToKey(idx)]=val
}
}
func idxToKey(i int)int{
return 1最好将有序值存储为切片,然后使用init函数生成如下映射:
var a map[int]string = {
1: "some"
3: "value"
4: "maintained"
7: "manually"
// more 100 entries...
}
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
}
var映射[int]字符串
var VAL=[]字符串{
“一些”,
“价值”,
“维持”,
“手动”,
}
func init(){
a=生成(映射[int]字符串)
对于idx,val:=范围val{
a[idxToKey(idx)]=val
}
}
func idxToKey(i int)int{
return 1能够在Go中随处使用iotas会非常好,虽然能够在Go中随处使用iotas会非常好,但是使用类型为T的map,初始空间为n个元素,例如,a=make(map[int]string,len(vals))
这会增加一点性能,但是map仍然是O(1)的摊销,这是在初始化时。我觉得这会分散我对答案的注意力。是的,不幸的是,没有什么比iota更优雅的了。谢谢。使用T类型的映射,初始空间为n个元素,例如,a=make(map[int]string,len(vals))
这会增加一点性能,但地图仍按O(1)摊销,这是在初始化时。我觉得这会分散我对答案的注意力。是的,不幸的是,没有什么比iota更优雅的了。谢谢。