如何在Go 中索引介面映射:解決「type interface {} 不支援索引」
在Go 中,嘗試索引具有特定鍵的介面{}映射可能會導致錯誤「類型介面{}不支援索引」。當嘗試從映射中存取元素時會出現這種情況,其中值儲存為接口,並且這些值的具體類型未知。
克服此錯誤的一種方法是明確地對從使用您期望的值的切片類型進行映射。例如,考慮以下程式碼片段,其中名為TopologyMap 的映射包含從字串到物件數組的映射:
Map := make(map[string]interface{}) Map["Users"] = Users_Array Map["Hosts"] = Hosts_Array
要從此映射中檢索元素,您可以使用以下語法,但它會導致“類型介面{} 不支援索引”錯誤:
Map["Users"][0]
要解決此問題,請使用類型斷言將介面值明確轉換為其所需的類型。下面的範例示範如何對字串和主機切片的映射執行此操作:
import ( "fmt" ) type Host struct { Name string } func main() { Map := make(map[string]interface{}) Map["hosts"] = []Host{Host{"test.com"}, Host{"test2.com"}} hm := Map["hosts"].([]Host) fmt.Println(hm[0]) }
在此範例中,我們將儲存在「hosts」鍵下的值明確類型轉換為主機切片宿主對象,使得存取各個宿主元素成為可能。
透過使用此方法,您可以有效地索引 interface{} 映射並檢索您需要的特定值,即使它們的類型未知在編譯時。
以上是如何在 Go 中索引到介面{}映射?的詳細內容。更多資訊請關注PHP中文網其他相關文章!