Go のジェネリクスはコードの再利用性を提供し、さまざまな種類のデータで使用できるコードを作成できます。 Java や C のジェネリックスと比較すると、Go のジェネリックスはパフォーマンスのオーバーヘッドが低くなりますが、型推論は条件付きのみであり、制限は限られています。
ジェネリックは、さまざまなコードの作成を可能にするプログラミング言語機能です。データの種類。 Go 1.18 ではジェネリックが導入され、そのエコシステムに大きな変化がもたらされます。この記事では、Go のジェネリックと他の言語機能の類似点と相違点を比較し、実践的な例を示します。
機能 | Go | Java | C |
---|---|---|---|
構文 | 関数名[T 任意](t T) | class Box<t></t> |
##template
|
Yes | No | No | |
条件付き | Yes | ##があります | # 制約 |
無制限 | 制限付き | パフォーマンス オーバーヘッド | |
Lower | Higher | ##実用的なケース: ジェネリック関数の並べ替え |
type Ordered interface { Less(a, b Ordered) bool } func Sort[T Ordered](arr []T) { for i := 0; i < len(arr)-1; i++ { for j := i + 1; j < len(arr); j++ { if arr[i].Less(arr[j]) { arr[i], arr[j] = arr[j], arr[i] } } } } type Int struct{ i int } func (a Int) Less(b Int) bool { return a.i < b.i } type String struct{ s string } func (a String) Less(b String) bool { return a.s < b.s } func main() { arr1 := []Int{{1}, {3}, {2}} arr2 := []String{"a", "c", "b"} Sort(arr1) Sort(arr2) fmt.Println(arr1) // [{1} {2} {3}] fmt.Println(arr2) // [{a} {b} {c}] }
Go のジェネリックスは、型指定された再利用可能なコードの作成を可能にすることで、Go コードの柔軟性を向上させます。 Java や C のジェネリックスよりもパフォーマンスのオーバーヘッドが低く、強力な機能を提供するため、Go エコシステムへの優れた追加となります。
以上がgolang のジェネリックスと他の言語機能の比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。