ホームページ >バックエンド開発 >Golang >Go の「タイプ インターフェイス {} はインデックス作成をサポートしていません」エラーを解決する方法?

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

Susan Sarandon
Susan Sarandonオリジナル
2024-12-16 04:27:10977ブラウズ

How to Resolve the

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 サイトの他の関連記事を参照してください。

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