ホームページ > バックエンド開発 > Golang > Go ジェネリックは数値計算をどのように簡素化できるのでしょうか?

Go ジェネリックは数値計算をどのように簡素化できるのでしょうか?

Barbara Streisand
リリース: 2024-12-21 02:07:09
オリジナル
819 人が閲覧しました

How Can Go Generics Simplify Numerical Calculations?

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)
ログイン後にコピー

制限事項

汎用関数は柔軟性を提供しますが、次の制限事項に留意してください:

  • 引数には次の値が必要です
  • 算術演算子は、制約内のすべての型でのみサポートされます。この場合、すべての数値型が演算子をサポートします。
  • 浮動小数点数を使用する場合、NaN と無限値が発生する可能性があります。

ジェネリックを活用することで、簡潔で再利用可能なコードを作成できます。 Go プログラムで数値データをシームレスに処理します。

以上がGo ジェネリックは数値計算をどのように簡素化できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート