首頁 > 後端開發 > Golang > 如何解決Go Maps中「type interface {}不支援索引」的問題?

如何解決Go Maps中「type interface {}不支援索引」的問題?

Mary-Kate Olsen
發布: 2024-12-25 10:18:17
原創
727 人瀏覽過

How to Fix

如何在Go 中為包含物件陣列的Map 建立索引:解決「Type Interface {} 不支援索引」錯誤

索引Go中包含物件數組的對應可能會導致錯誤「類型介面{} 不支援索引」。發生此錯誤的原因是 Go 不知道陣列元素的預期類型,這些元素由介面類型表示。

要克服此錯誤並檢索所需的元素,您需要明確轉換 interface{}值設定為您期望的特定類型。

考慮以下映射:

Map := make(map[string]interface{})
Map["Users"] = Users_Array
Map["Hosts"] = Hosts_Array
登入後複製

要存取「Users」數組的第一個元素,請使用以下命令code:

Users_Array := Map["Users"].([]User)
firstUser := Users_Array[0]
登入後複製

同樣,對於「 Hosts」陣列:

Hosts_Array := Map["Hosts"].([]Host)
firstHost := Hosts_Array[0]
登入後複製

這種到特定類型的轉換確保了索引操作可以成功執行。未能執行轉換將導致「類型介面 {} 不支援索引」錯誤。

以下是示範轉換和索引過程的範例:

package main

import "fmt"

type Host struct {
    Name string
}

type User struct {
    Name string
}

func main() {
    Map := make(map[string]interface{})
    Map["hosts"] = []Host{{"test.com"}, {"test2.com"}}
    Map["users"] = []User{{"john"}, {"jane"}}

    hm := Map["hosts"].([]Host)
    fmt.Println(hm[0])

    um := Map["users"].([]User)
    fmt.Println(um[0])
}
登入後複製

以上是如何解決Go Maps中「type interface {}不支援索引」的問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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