Go 1.18 引入了泛型函數,支援類型參數化,增強了程式碼可重複使用性。泛型函數語法為 func 函數名稱[型別參數] (輸入參數 類型參數) 型別參數,可使用型別參數化型別作為輸入和傳回型別。如 Min[T number] (a, b T) T,其中 T 必須為 numeric 類型,a 和 b 為 T 類型的輸入參數,傳回較小的數字。泛型函數大大提高了程式碼的可重複使用性,可編寫通用程式碼,適用於各種類型。
Go 泛型的函數應用
Go 1.18 及更高版本中引入的泛型使得函數可以接受和返回類型參數化的型別。這極大地增強了程式碼的可重用性和靈活性。
語法
泛型函數的語法如下:
func myFunc[T any](input T) T { // ... }
其中:
myFunc
是函數名稱。 T any
是型別參數。它可以是任何類型,包括自訂類型。 input
是帶有類型參數化類型的輸入參數。 T
是具有類型參數化類型的回傳類型。 實戰案例
假設我們想要建立一個函數來計算兩個數字的最小值。泛型函數可以讓我們用任何數字類型來表示這兩個數字,而無需建立多個具有特定類型簽名的函數。
我們可以寫如下泛型函數:
func Min[T number](a, b T) T { if a < b { return a } return b }
其中:
T number
表示類型參數T 必須是numeric 類型(例如int、float64)。 a
和 b
是輸入參數,類型為 T。 if-else
語句比較兩個數字並傳回較小的數字。 我們可以使用此函數來計算不同類型數字的最小值:
var a int8 = 10 var b int16 = 20 min := Min(a, b) // 类型推断为 int16 fmt.Println(min) // 输出:10
#Go 泛型透過允許函數接受和返回類型化類型,大大提高了程式碼的可重複使用性和靈活性。透過使用泛型的函數,我們可以編寫通用程式碼,適用於各種類型。
以上是golang泛型的函數應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!