提问人:iggy12345 提问时间:7/19/2023 更新时间:7/19/2023 访问量:88
在布尔条件右侧检查 Golang 中的字典键是否存在
Checking Dictionary Key Existence in Golang on right side of boolean condition
问:
我在 golang 中有一个映射数组,我正在遍历列表,需要检查列表中的下一个映射中是否存在当前迭代的键,我知道检查映射中是否存在元素的正常方法是:
if _, ok := m[key]; ok {
...
}
但是有没有办法做到这一点呢?
if index < len(arr)-1 && (_, ok := arr[index+1][key]; ok) {
...
}
短路在哪里起作用,代码保持在一行中?
答:
2赞
Zeke Lu
7/19/2023
#1
AFAIK,没有办法在一行内完成。
Go语言中没有?:的原因是该语言的设计者已经看到该操作被频繁地用于创建难以理解的复杂表达式。if-else 形式虽然更长,但无疑更清晰。一种语言只需要一个条件控制流构造。
Go 的一句谚语是:清晰胜于聪明。
所以不要为此而苦苦挣扎。就这样写吧:
if index < len(arr)-1 {
if _, ok := arr[index+1][key]; ok {
//...
}
}
关于你正在迭代列表,也许最好这样写:
// assumes arr has at least 1 items
for index := range arr[0 : len(arr)-1] {
if _, ok := arr[index+1][key]; ok {
//...
}
}
评论
0赞
iggy12345
7/19/2023
我很害怕这个,但我同意,我认为这不值得为之奋斗。我只是好奇是否存在一些解决方法。我还是 Golang 的新手,所以我还不太了解这门语言的所有复杂性
评论
map[string]string
if
if index < len(arr)-1 && arr[index+1][key] != "" {
map[key] == ""