首頁 > 後端開發 > Golang > 如何在 Go 中索引到介面{}映射?

如何在 Go 中索引到介面{}映射?

Patricia Arquette
發布: 2024-12-18 11:50:12
原創
521 人瀏覽過

How to Index into an interface{} Map in Go?

如何在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板