多個映射中高效的密鑰存在檢查
在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 { // ... }
這些方法允許在單一條件語句內的多個映射中對某個鍵是否存在進行簡潔有效的檢查。
以上是如何有效檢查多個 Go Map 中的鍵是否存在?的詳細內容。更多資訊請關注PHP中文網其他相關文章!