この質問は、Go でマップからキーを取得することを中心に展開しています。提供されている関数 Keys() は、汎用インターフェイス タイプを使用してマップからキーを抽出するように設計されていますが、Go の強力な型指定システムにより、map[int]interface{} が map[interface{}]interface{ と一致しないという問題が発生します。 }.
Go はジェネリックスをサポートしていません。つまり、キーと値の型の組み合わせごとにマップ型を明示的に定義する必要があります。強力な型システムは型の安全性を保証し、int とinterface などの互換性のない型間の代入を防ぎます。
1 つの方法は、使用されている特定のマップ タイプに一致するように Keys() 関数を変更することです。たとえば、マップで int キーが使用されている場合、関数は func Keys(m map[int]interface{}) []int.
必要なマップ タイプが map[interface{}]interface{} の場合、次の例のように、マップの初期化をそれに応じて編集する必要があります:
m2 := map[interface{}]interface{}{ 2: "string", 3: "int", }
複雑なシナリオの場合、リフレクト パッケージを利用してマップ キーに動的にアクセスして操作できます。ただし、このアプローチには、リフレクションに関連するオーバーヘッドによるパフォーマンスへの影響が伴います。
発生した問題は、Go の強力な型指定システムとジェネリックスの欠如の結果です。推奨されるソリューションでは、型の不一致を処理するさまざまな方法が提供され、必要に応じてマップ キーを取得できるようになります。
以上がGo マップからキーを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。