在Go 中寫出通用數值函數
在Go 中,當處理不同的數值類型時,可能會遇到需要可以處理的函數任何數字資料。在這裡,我們探討如何在 Go 1.18 及更高版本中解決這個用例,以及早期版本的可能解決方案。
Go 1.18 及更高版本:
隨著 type 的引入Go 1.18 中的參數,定義泛型函數很簡單。
func add[T Number](a, b T) T { return a + b; }
這裡,T 代表型別參數,受 Number 介面約束。此介面使用 golang.org/x/exp/constraints 套件定義,確保 T 是數字類型。這種方法允許使用任意兩個數字類型(整數或浮點)作為參數,並且函數傳回具有相同類型的結果。
Go 的早期版本:
在早期的Go 版本中,有幾種方法可以處理這種情況:
結論:
首選解決方案取決於所使用的 Go 版本。對於 Go 1.18 及更高版本,使用類型參數和數字約束的泛型函數方法是最簡潔和高效的。對於早期版本,需要在轉換為浮點型或管理特定類型函數之間進行選擇。
以上是如何在 Go 中編寫通用數值函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!