gpt4 book ai didi

go - 映射键的惯用 else if 链

转载 作者:IT王子 更新时间:2023-10-29 02:34:03 26 4
gpt4 key购买 nike

我有一个相当长的 else if 链在映射中查找键并在找到时设置特定值。我选择使用最少代码的方式是这样的(m 是一个 map[string]interface{})

var ok bool
var s interface{}
if s, ok = m["key1"]; ok {
} else if s, ok = m["key2"]; ok {
....
} else if s, ok = m["keyN"]; ok {
} else {
return RuhRohError
}
g.Id = s.(string)

这感觉有点笨拙,我正在执行所有这些 else if 以在条件中设置变量。有没有惯用的方法来做到这一点?我认为这种方式并不能立即使我想做什么变得显而易见。

最佳答案

例如,

package main

import "fmt"

func findValue(m map[string]interface{}, keys []string) (interface{}, bool) {
for _, key := range keys {
if value, ok := m[key]; ok {
return value, true
}
}
return nil, false
}

func main() {
m := map[string]interface{}{"keyn": "valuen"}
keys := []string{"key1", "key2", "keyn"}
s, found := findValue(m, keys)
if !found {
return
}
id := s.(string)
fmt.Println(id)
}

输出:

valuen

关于go - 映射键的惯用 else if 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30471586/

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