我們有一個map[string]string,我假設這意味著從地圖中檢索到的字符串的零值是""所以這是否意味著:var userId, ok = params["user_id"];if !ok || userId == "" { return 422, "Missing user_id in request"}與此相同的邏輯:var userId = params["user_id"];if userId == "" { return 422, "Missing user_id in request"}只是確保我的理解是正確的。
1 回答

繁星點點滴滴
TA貢獻1803條經驗 獲得超3個贊
如果您打算存儲值類型的零值,則不一樣。
看這個例子:
m := map[string]string{
"empty": "",
}
if v, ok := m["empty"]; ok {
fmt.Printf("'empty' is present: %q\n", v)
} else {
fmt.Println("'empty' is not present")
}
if v, ok := m["missing"]; ok {
fmt.Printf("'missing' is present: %q\n", v)
} else {
fmt.Printf("'missing' is not present")
}
它輸出(在Go Playground上嘗試):
'empty' is present: ""
'missing' is not present
確實,如果您從不在地圖中存儲零值,您可以簡單地使用if m[value] == zeroValue {}.
可以利用地圖的這種“屬性”來優雅地創建集合。
并且使用這種“技術”還有另一個優點:您可以以緊湊的方式檢查多個鍵的存在(您不能使用特殊的“comma ok”形式來做到這一點)。
- 1 回答
- 0 關注
- 105 瀏覽
添加回答
舉報
0/150
提交
取消