Go中的泛型提供了程式碼的可重複使用性,允許建立可用於不同類型資料的程式碼。與Java和C 的泛型相比,Go的泛型效能開銷較低,但型別推理僅為有條件,限制有限。
泛型是一種程式語言特性,允許建立可用於各種類型資料的代碼。 Go 1.18 版本引入了泛型,為其生態系統帶來了巨大的改變。本文將比較 Go 中泛型與其他語言特性的異同,並提供實戰案例。
#特性 | #Go | #JavaC | |
---|---|---|---|
func name[T any](t T)
|
class Box
|
template
|
|
#是 | 否 | 否 | |
有條件 | 有 | ||
約束
無限
###############效能開銷# #####較低######較低######較高################實戰案例:排序泛型函數##### #以下範例示範如何使用泛型函數對不同類型的陣列進行排序:###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}] }
以上是泛型與golang中其它語言特性的比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!