Go での「タイプ インターフェイス {} はインデックス付けをサポートしていません」
さまざまなインターフェイスを保持するマップを操作する場合のエラーの解決{}値を指定すると、インデックスを作成しようとするとエラーが発生する可能性があります。具体的には、「タイプ インターフェイス {} はインデックス作成をサポートしていません。」これは、interface{} タイプが本質的にインデックス作成をサポートしていないために発生します。
このマップの要素に正常にインデックスを付けてアクセスするには、interface{} 値をスライスなどの想定されるタイプに明示的に変換する必要があります。 。この変換は、角括弧内にターゲットの型を指定することで実現できます。
たとえば、次の Go コードを考えてみましょう。
package main import "fmt" type Host struct { Name string } func main() { Map := make(map[string]interface{}) Map["hosts"] = []Host{Host{"test.com"}, Host{"test2.com"}} // Convert interface{} to a slice of Host hm := Map["hosts"].([]Host) fmt.Println(hm[0]) }
この例では、マップ "Map" には次の値が設定されます。ホスト構造のスライス。スライスの最初の要素にアクセスするには、「Map['hosts']」のインターフェース値を []Host 型に変換する必要があります。{}これは次の式で行われます。
hm := Map["hosts"].([]Host)
変換により、標準の Go スライスと同様にスライスの要素にアクセスできます。この場合、ホストのスライスの最初の要素であるため、出力は「test.com」になります。
以上がGo の「タイプ インターフェイス {} はインデックス作成をサポートしていません」エラーを解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。