ホームページ >バックエンド開発 >Golang >Go コードで「m2 を Map[interface{}]interface{} に割り当てられません」というエラーがスローされるのはなぜですか?

Go コードで「m2 を Map[interface{}]interface{} に割り当てられません」というエラーがスローされるのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-06 21:50:13297ブラウズ

Why Does My Go Code Throw a

「m2 を Map[interface{}]interface{} に割り当てられません」エラーを解決する方法

コード内で、タイプに関連するエラーが発生しましたKeys 関数で使用されるマップとアクセスしようとしているマップ間の互換性:

cannot use m2 (type map[int]interface {}) as type map[interface {}]interface {} in argument to Keys

これを解決するには、次のことを行う必要があります。次の点に留意してください:

Golang の型システムとジェネリック

  • Golang は静的に型付けされた言語です。つまり、明示的な型定義が必要です。
  • Golang はそうではありません。ジェネリックをサポートしているため、ジェネリック型を使用して関数を定義することはできません。

Type互換性

コード内では、map[int]interface{} タイプのマップを使用しているときに、Keys 関数は、map[interface{}]interface{} タイプのマップを操作するように定義されています。キーのタイプが異なるため、これらのタイプには互換性がありません。

解決策のオプション

この問題を解決するには、いくつかの方法があります。

オプション 1:キー 機能

  1. 型のマップを受け入れるように関数定義を変更しますmap[int]interface{}:
func Keys(m map[int]interface{}) []interface{} {
    // Implement function
}

オプション 2: マップを変更する

  1. マップのタイプを次のように変更します。 map[interface{}]interface{}:
m2 := map[interface{}]interface{}{
    2: "string",
    3: "int",
}

オプション 3: リフレクションを使用する (非推奨)

  1. リフレクト パッケージを使用するマップキーにアクセスします。ただし、このアプローチにはパフォーマンスの低下が伴います。

Golang では型の互換性が重要であることを忘れないでください。このようなエラーを回避するには、コード内の型が予期される型と一致していることを確認してください。

以上がGo コードで「m2 を Map[interface{}]interface{} に割り当てられません」というエラーがスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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