ジェネリックは、型に依存しないコードを作成するために Go 1.18 で導入されました。ジェネリックスでは、角かっこ [] を使用して、func Sort[T any](arr []T) などの型パラメーターを定義します。 Go コンパイラーは、func Swap[T](x, y T) のような型パラメーターを推論できます。ジェネリックスを使用すると、二分探索ツリー型 Node[T any] struct { … } などのデータ構造を構築したり、型 Node[T 比較可能] struct { … } などの型制約を課したりすることができます。 Go ジェネリックは、新しい型を作成せずにコードの柔軟性を高めます。
Go 1.18 では、Go 言語に待望の機能 ジェネリック が導入されました。ジェネリックを使用すると、特定の型に依存しないデータ構造とアルゴリズムを作成できるため、コードがより再利用可能で柔軟になります。
ジェネリックスは角かっこ []
を使用して定義され、任意の数の型パラメーターが含まれます:
func Sort[T any](arr []T)
上の例では、 T
は型パラメータです。つまり、任意の型の項目にすることができます。
関数のジェネリック型パラメーターは、コンテキストから推論できる場合は省略できます。
func Swap[T](x, y T)
この関数は、任意の型の 2 つの引数を受け取ることができます。一緒に使用されます。 Go コンパイラーは、T
が x
および y
型であるべきだと推論します。
二分探索ツリーの汎用バージョンを作成しましょう:
type Node[T any] struct { Value T Left *Node[T] Right *Node[T] } func Insert[T comparable](n *Node[T], value T) *Node[T] { // ... } func Search[T comparable](n *Node[T], value T) *Node[T] { // ... }
この二分探索ツリーを使用すると、次の要素を保存および検索できます。匹敵するタイプ。
型パラメーターに制約を課す必要がある場合があります。たとえば、二分探索ツリー内の 2 つの値の比較が有効であることを確認するには、T
が comparable
インターフェイスを実装することを要求できます。
type Node[T comparable] struct { // ... }
Go ジェネリックは、Go 言語に強力な新機能をもたらします。ジェネリックを定義して使用する方法を理解することは、コードをより柔軟で再利用可能にする鍵となります。
以上がGolang ジェネリックの定義と適用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。