Go 中的泛型函數
Go 中的介面類型可以保存任何類型,而不需要任何實作的方法,給人的印像是它們充當泛型函數的形式。然而,事實並非如此。真正的泛型函數(在編譯時類型未知)在 1.18 版本之前的 Go 中不受支援。
在 Go 1.18 中,引入了泛型,可以建立泛型函數。通用函數可以使用 func 關鍵字定義,後面跟著方括號內的類型參數。類型參數指定泛型函數接受的類型。例如:
func Print[T any](s []T) { for _, v := range s { fmt.Print(v) } }
在此範例中,T 是可以表示任何類型的型別參數。函數 Print 接受 []T 類型的切片並列印該切片的元素。
要使用泛型函數,您可以傳遞所需類型的切片作為參數:
// Passing a list of strings Print([]string{"Hello, ", "world\n"}) // Passing a list of integers Print([]int{1, 2})
程式的輸出將是:
Hello, world 12
泛型函數提供了一種簡潔而安全的方法來編寫可以在不同類型上運行的程式碼,而無需犧牲類型安全。
以上是泛型如何在 Go 中實現真正的泛型函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!