ホームページ > バックエンド開発 > Golang > インターフェイスをマップに変換すると、「インターフェイス変換: インターフェイス {} は []インターフェイス {} であり、マップ[文字列]インターフェイス {} ではありません」というエラーが発生するのはなぜですか?

インターフェイスをマップに変換すると、「インターフェイス変換: インターフェイス {} は []インターフェイス {} であり、マップ[文字列]インターフェイス {} ではありません」というエラーが発生するのはなぜですか?

Linda Hamilton
リリース: 2024-11-02 01:48:31
オリジナル
429 人が閲覧しました

Why am I getting an

インターフェイス変換エラー: 無効なマッピング

インターフェイスをマップに変換しようとすると、JSON 解析中にエラーが発生し、次のメッセージが表示されます「インターフェイス変換: インターフェイス {} は []インターフェイス {} であり、マップ[文字列]インターフェイス {} ではありません。」

説明

エラーは、次の間の不一致を示しています。データ型。提供されたコード スニペットでは、次の行はオーガニック結果リストから結果を抽出します。

result := fmt.Sprintf("%v", response["organic_results"].(map[string]interface{})["title"])
ログイン後にコピー

response["organic_results"] はマップであると想定されており、その値は map[string としてキャストされる必要があります。 ]インターフェース{}を使用して、特定のタイトル値にアクセスします。ただし、response["organic_results"] の実際のデータ型は、マップではなくインターフェース ([]interface{}) のスライスです。

Solution

エラーを解決するには、コードをそれに応じて修正する必要があります。

for _, item := range response["organic_results"].([]interface{}) {
    fmt.Sprintf("%v", item.(map[string]interface{})["title"])
}
ログイン後にコピー

ここで、ループは []interface{} スライス内の各項目を反復処理し、各項目は map[string]interface{ としてキャストされます。 } タイトルの値を抽出します。

以上がインターフェイスをマップに変換すると、「インターフェイス変換: インターフェイス {} は []インターフェイス {} であり、マップ[文字列]インターフェイス {} ではありません」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート