多個映射中高效的密鑰存在檢查
在Go 中,使用映射是很常見的,映射是用於檢索密鑰的高效資料結構-值對。但是,開發人員提供的程式碼演示了需要檢查兩個單獨的映射中是否存在密鑰。問題仍然是這個過程是否可以變得更簡潔。
如答案中所解釋的,在 Go 中使用特殊的 v, ok := m[k] 形式來檢查鍵是否存在僅限於單變量賦值。因此,使用這種形式將兩個檢查合併為一個 if 條件是不可行的。
但是,還有其他方法可以實現所需的功能:
元組賦值:
如果map的值類型是介面類型,並且可以保證不使用nil值,則可以使用兩個索引進行元組賦值表達式:
if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil { // ... }
輔助函數:
可以建立輔助函數來執行兩個映射中的鍵是否存在檢查並傳回結果:
func idx(m1, m2 map[string]interface{}, k string) ( v1, v2 interface{}, ok1, ok2 bool) { v1, ok1 = m1[k] v2, ok2 = m2[k] return }
此函數可以如下使用:
if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); ok1 && ok2 { // ... }
這些方法允許在單一條件語句內的多個映射中對鍵是否存在進行簡潔有效的檢查。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3