ホームページ  >  記事  >  バックエンド開発  >  Go で関数をマップ キーとして使用できますか?

Go で関数をマップ キーとして使用できますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 11:08:29913ブラウズ

Can Functions Be Used as Map Keys in Go?

マップ キーとして関数を使用する

プログラミングでは、効率的な検索と操作のためにデータを構造化された方法で保存する必要があります。マップは、キーと値を関連付ける基本的なデータ構造であり、情報にすばやく簡単にアクセスする方法を提供します。

ただし、場合によっては、関数をマップ内のキーとして使用することが望ましい場合があります。これは、キーが動的である場合、またはカスタムの比較ロジックが必要な場合に役立ちます。ただし、関数をマップ キーとして使用するには制限があります。

言語の制限

Go を含む多くのプログラミング言語では、関数は有効なマップ キーではありません。この制限の理由は、マップの基礎となる実装に起因します。マップは、キーの存在を判断するために効率的な比較操作に依存します。一方、関数は、プリミティブ型や他のデータ構造と同じようには比較できません。

Go の次のコード スニペットは、関数をマップ キーとして使用しようとしたときに発生するエラーを示しています。

<code class="go">type Action func(int)

func test(a int) {}

func test2(a int) {}

func main() {
  x := map[Action]bool{}
  x[test] = true
  x[test2] = false
}</code>

このコードをコンパイルしようとすると、次のエラー メッセージが表示されます:

invalid map key type Action

このエラーは、Go では関数をマップ キーとして使用することが許可されていないことを示しています。

結論

Go では関数をマップ キーとして直接使用することはできませんが、使用できる代替アプローチはあります。そのようなアプローチの 1 つは、必要な機能をカプセル化するカスタム タイプを作成し、代わりにそのカスタム タイプをマップ キーとして使用することです。この回避策により、言語の制限を遵守しながら、望ましい動作が可能になります。

以上がGo で関数をマップ キーとして使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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