我是 golang 的新手,關(guān)于改變地圖的 Go 之旅的這一部分正在扼殺我的粉紅色小馬世界。下面是問題的一個例子:package mainimport "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}但是為什么我每次都需要在需要從地圖中獲取某些內(nèi)容的每個地方都這樣做?我認(rèn)為映射類似于關(guān)聯(lián)數(shù)組,但這種行為真的很奇怪。如何制作帶有恐慌級別的鍵檢查的地圖?
2 回答

MM們
TA貢獻(xiàn)1886條經(jīng)驗 獲得超2個贊
確定地圖中的零值不是由于鍵不存在而導(dǎo)致的唯一方法是“逗號,好的”習(xí)語 ( v, ok := m[k])。如果您需要對不存在的鍵進(jìn)行緊急響應(yīng),最好的方法是編寫一個輔助函數(shù)。
func mapSafe(m map[string]int, key string) (i int) {
i, ok: = m[key]
if (!ok) {
panic("Key not in map")
}
return
}
- 2 回答
- 0 關(guān)注
- 203 瀏覽
添加回答
舉報
0/150
提交
取消