Go でオブジェクトの配列を含むマップにインデックスを付ける方法: 「型インターフェイス {} はインデックス作成をサポートしていません」エラーを解決する
インデックス作成Go でオブジェクトの配列を含むマップを使用すると、「タイプ インターフェイス {} はインデックス付けをサポートしていません。」というエラーが発生する可能性があります。このエラーは、インターフェースの型で表される配列要素の期待される型を Go が認識していないために発生します。
このエラーを克服して目的の要素を取得するには、インターフェースを明示的に変換する必要があります。{}
次のマップを考えてみましょう:
Map := make(map[string]interface{}) Map["Users"] = Users_Array Map["Hosts"] = Hosts_Array
「Users」配列の最初の要素にアクセスするには、次のコード:
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 で「タイプ インターフェイス {} はインデックス作成をサポートしていません」を修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。