ジェネリックは、関数と型の定義が複数の型に対して機能することを可能にし、それによって再利用性と保守性を向上させる機能です。 Go のジェネリックスは角括弧を使用して型パラメーターを表し、さまざまな比較可能な型を受け入れることができます。そのユースケースには、重複コードの排除、可読性の向上、タイプセーフの向上などが含まれます。ジェネリックスを使用する実際の例は、複数のタイプのプッシュおよびポップ操作をサポートするスタック データ構造です。
ジェネリックは、複数の型で機能する関数、メソッド、および型の定義を可能にするプログラミング言語機能です。これにより、再利用性と保守性が大幅に向上し、型具体化コードが不要になります。
ジェネリックスは Go 1.18 で導入され、言語に強力な機能をもたらしました。ジェネリック型パラメーターは、次のように角括弧で表されます。
func Min[T comparable](a, b T) T { if a < b { return a } return b }
この例では、Min
関数は、int、float64、string などの同等の型を受け入れることができます。
Go では、ジェネリックには次のような多くのユース ケースがあります。
ジェネリックを使用する実践的な例を考えてみましょう。先入れ先出し (FIFO) コレクションである Stack
データ構造があるとします。さまざまなタイプの値を操作できるようにしたいと考えています。
package main type Stack[T any] struct { elements []T } func (s *Stack[T]) Push(item T) { s.elements = append(s.elements, item) } func (s *Stack[T]) Pop() T { item := s.elements[len(s.elements)-1] s.elements = s.elements[:len(s.elements)-1] return item } func main() { intStack := Stack[int]{} intStack.Push(1) intStack.Push(2) fmt.Println(intStack.Pop()) // 2 fmt.Println(intStack.Pop()) // 1 stringStack := Stack[string]{} stringStack.Push("Hello") stringStack.Push("World") fmt.Println(stringStack.Pop()) // World fmt.Println(stringStack.Pop()) // Hello }
この例では、任意のタイプの値を格納できる汎用 Stack データ構造を作成します。値の型として int と string を使用して 2 つのスタックを作成し、プッシュおよびポップ操作を実行しました。
以上がGolang のジェネリックとは何ですか?詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。