這個問題圍繞著從Go中的映射中獲取鍵展開。提供的函數Keys() 旨在從具有通用介面類型的映射中提取鍵,但由於Go 的強類型系統而遇到問題,其中map[int]interface{} 與map[interface{}]interface{ 不匹配}.
Go 不支援泛型,這意味著必須為每個鍵和值類型組合明確定義映射類型。強型別系統確保型別安全,防止不相容型別之間的賦值,例如 int 和 interface{}。
一種方法是修改 Keys() 函數以匹配正在使用的特定地圖類型。例如,如果地圖使用 int 鍵,則函數應定義為 func Keys(m map[int]interface{}) []int.
如果所需的地圖類型是map[interface{}]interface{},則應相應地編輯地圖初始化,如下例所示:
m2 := map[interface{}]interface{}{ 2: "string", 3: "int", }
對於複雜的場景,可以利用reflect套件來動態存取和操作地圖鍵。然而,由於與反射相關的開銷,這種方法會帶來效能影響。
遇到的問題是 Go 的強型別系統和缺乏泛型的結果。建議的解決方案提供了不同的方法來處理類型不匹配,讓您可以根據需要檢索映射鍵。
以上是如何有效率地從Go Map中檢索Key?的詳細內容。更多資訊請關注PHP中文網其他相關文章!