gpt4 book ai didi

go - 变异映射中不存在的键与数组中的相似键

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

我是 golang 的新手,Go 之旅的这一部分关于 mutating maps正在杀死我的粉红色小马世界。

这是问题的一个例子:

package main

import "fmt"

func main() {
a := make([]int, 10)
fmt.Println(a[123]) //panic: runtime error: index out of range, good

b := make(map[int]int, 10)
fmt.Println(b[123]) // 0 ? WHAAAT? Not nil, not panic?
}

我知道,我可以用第二个值检查元素是否存在,如下所示:

v, ok := b[11]
if (!ok) {
// do something strange
}

但为什么我每次都需要在每个需要从 map 中获取信息的地方执行此操作?我认为映射类似于关联数组,但这种行为真的很奇怪。

我如何制作一个带有紧急键检查的 map ?

最佳答案

确定映射中的零值不是因为键不存在的唯一方法是“comma, ok”成语 (v, ok := m[k] ).如果您需要对不存在的键进行 panic 响应,最好的方法是编写一个辅助函数。

func mapSafe(m map[string]int, key string) (i int) {
i, ok: = m[key]
if (!ok) {
panic("Key not in map")
}
return
}

关于go - 变异映射中不存在的键与数组中的相似键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32569479/

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