亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

避免需要冗余檢查來映射給定的零值字符串?

避免需要冗余檢查來映射給定的零值字符串?

Go
精慕HU 2022-05-18 14:24:28
我們有一個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”形式來做到這一點)。


查看完整回答
反對 回復 2022-05-18
  • 1 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號