ホームページ >バックエンド開発 >Golang >Go でインターフェース マップにインデックスを付ける方法{}

Go でインターフェース マップにインデックスを付ける方法{}

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-18 11:50:12524ブラウズ

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

Go でインターフェイス マップのインデックスを作成する方法: 「タイプ インターフェイス {} はインデックス作成をサポートしていません」を解決する

Go でインデックスを作成しようとしています特定のキーを持つインターフェース マップは、「タイプ インターフェース {} はインデックス作成をサポートしていません」というエラーを引き起こす可能性があります。{}これは、値がインターフェイスとして保存され、これらの値の特定の型が不明なマップから要素にアクセスしようとしたときに発生します。

このエラーを克服する 1 つの方法は、から返された値を明示的に型キャストすることです。期待される値のスライス タイプを使用してマップします。たとえば、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」キーの下に格納されている値を明示的に型変換して、ホスト オブジェクト。個々のホスト要素にアクセスできるようになります。

このアプローチを使用すると、インターフェース マップに効果的にインデックスを付け、必要な特定の値を取得できます。{}型はコンパイル時には不明です。

以上がGo でインターフェース マップにインデックスを付ける方法{}の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。