ホームページ  >  記事  >  バックエンド開発  >  Go エラー: インスタンス化なしではジェネリック型を使用できません

Go エラー: インスタンス化なしではジェネリック型を使用できません

王林
王林転載
2024-02-08 23:12:09691ブラウズ

Go エラー: インスタンス化なしではジェネリック型を使用できません

PHP エディター Apple が今日皆さんに共有したいことは、Go 言語のバグについてです。つまり、ジェネリック型はインスタンス化なしでは使用できないということです。 Go 言語では、ジェネリックスは非常に強力な機能であり、より多用途で柔軟なコードを作成できるようになります。ただし、場合によっては、インスタンス化せずにジェネリック型を使用できないという問題が発生することがあります。このエラーにより、修正方法がわからなくなる可能性があります。次に、この問題の原因と解決策を見てみましょう!

質問内容

Go ジェネリックを学習中に、解決できないと思われるエラーに遭遇しました。これを最も単純なコードに要約しました:

リーリー

プレイグラウンドでは、make() 呼び出し (および同様にコメントアウトされた new 呼び出し) で次のエラー メッセージが表示されます。 リーリー

ただし、

make() はインスタンス化関数です。したがって、構文の微妙な点が欠けていることを願っています。 Go は何について不満を抱いており、何を修正する必要があるのでしょうか?

回避策

組み込みの

make など、型パラメータが必要な場所を含むパラメータ化された型を使用する場合は常に、次のことを行う必要があります。定義内の型パラメータを実際の型に置き換えます。これをインスタンス化と呼びます。 リーリー ジェネリック型が

別の

ジェネリック型の型パラメーターとして使用される場合、そのジェネリック型もインスタンス化する必要があります: リーリー 型パラメータは、関数シグネチャ、フィールド、型定義などでインスタンス化に使用できます。

リーリー

言語仕様の関連参照は、(現在)

型定義

: という 2 つの異なる場所にあります。 一个> および

インスタンス化

他のプログラミング言語では、「インスタンス化」はオブジェクトのインスタンスを作成することを指す場合があります。Go では、この用語は特に型パラメータを具象型に置き換えることを指します。私の意見では、この用語の使用法は依然として一貫していますが、Go では必ずしも割り当てを意味するわけではありません。

明示的な型パラメーターなしでジェネリック関数を呼び出すことができることに注意してください。インスタンス化もそこで行われますが、型パラメーターがすべて関数パラメーターから推論される場合がある点が異なります。 リーリー 推論は、型パラメーターのリストが空であってはいけないという制限付きで、汎用の

型にも適用されます。ただし、この機能は無効になっているため、すべての型パラメータを明示的に指定する必要があります。

リーリー

以上がGo エラー: インスタンス化なしではジェネリック型を使用できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。