Go 中數值資料的通用函數
在Go 中建立計算器時,處理整數和浮點數之間的差異可能是一個挑戰。有幾種方法可以解決此問題,包括:
將所有內容轉換為浮點數
此方法涉及將所有輸入轉換為浮點數,因為浮點數的範圍比整數更廣。但是,這可能會導致大整數出現精確度問題。
為每種類型建立單獨的函數
或者,您可以為每種類型建立單獨的函數,例如 addInt並添加浮動。雖然這是一種明確的方法,但它可能會導致程式碼重複和樣板檔案。
利用泛型(Go 1.18 及更高版本)
隨著 Go 1.18 中泛型的引入,一個更優雅的解決方案就可用了。您可以定義一個型別參數僅限於數字型別的泛型函數:
func add[T Number](a, b T) T { return a + b }
可以使用 golang.org/x/exp/constraints 套件定義數字限制:
import ( "golang.org/x/exp/constraints" ) type Number interface { constraints.Integer | constraints.Float }
使用這個通用函數,您可以對任何數字類型(整數、浮點數,甚至複數)執行加法數字):
fmt.Println(add(1, 2)) // 3 (int + int) fmt.Println(add(1.5, 3.2)) // 4.7 (float64 + float64)
限制
雖然
限制以上是Go 泛型如何簡化數值計算?的詳細內容。更多資訊請關注PHP中文網其他相關文章!