Go での数値データの汎用関数
Go で計算機を作成する場合、整数と浮動小数点の違いを処理するのが難しい場合があります。この問題に対処するには、次のようないくつかの方法があります。
すべてを浮動小数点数に変換する
浮動小数点は整数よりも範囲が広いため、このアプローチにはすべての入力を浮動小数点数に変換することが含まれます。ただし、これにより、大きな整数の精度の問題が発生する可能性があります。
型ごとに個別の関数を作成する
あるいは、addInt など、型ごとに個別の関数を作成することもできます。そしてFloatを追加します。これは明確なアプローチですが、コードの重複やボイラープレートが発生する可能性があります。
ジェネリックの利用 (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 プログラムで数値データをシームレスに処理します。
以上がGo ジェネリックは数値計算をどのように簡素化できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。