首頁 > 後端開發 > Golang > 如何從具有不同值類型的 Go Map 存取鍵?

如何從具有不同值類型的 Go Map 存取鍵?

Patricia Arquette
發布: 2024-12-20 01:42:09
原創
1061 人瀏覽過

How Can I Access Keys from Go Maps with Different Value Types?

存取具有不同值類型的映射的鍵

在Go 中,映射本質上是通用的,但由於不存在,它們的行為不是協變的的泛型類型。這意味著您可能會遇到希望存取具有不同值類型的映射鍵的情況。嘗試使用 interface{} 作為值類型可能看起來很直觀,但它並沒有按預期工作。

func main() {
    mapOne := map[string]int
    mapTwo := map[string]double
    mapThree := map[string]SomeStruct

    useKeys(mapOne)
}
func useKeys(m map[string]interface{}) {
    //something with keys here
}
登入後複製

雖然渴望一個優雅的解決方案是可以理解的,但有必要承認在 Go 中這一點,您可能需要為具有不同值類型的映射複製某些邏輯。

但是,如果您需要靈活地從任何映射獲取鍵,則可以使用反射使用:

func useKeys(m interface{}) {
    v := reflect.ValueOf(m)
    if v.Kind() != reflect.Map {
        fmt.Println("not a map!")
        return
    }

    keys := v.MapKeys()
    fmt.Println(keys)
}
登入後複製

這種方法允許您使用任何類型的地圖,並提供對其密鑰的存取。

以上是如何從具有不同值類型的 Go Map 存取鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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