ホームページ > バックエンド開発 > Golang > Go で数値型のジェネリック関数を作成するには?

Go で数値型のジェネリック関数を作成するには?

Barbara Streisand
リリース: 2024-12-18 00:00:14
オリジナル
588 人が閲覧しました

How to Write a Generic Function for Numerical Types in Go?

Go で数値型のジェネリック関数を作成する方法

JavaScript および TypeScript ユーザーは、Go での数値型の処理について疑問に思うかもしれません。 int と float を使用するとき。この記事では、任意の数値引数を受け入れることができるジェネリック関数を作成する最良の方法を検討します。

Go 1.18 以降のジェネリック関数

での型パラメータの導入により、 Go 1.18 では、型 T でパラメータ化された関数を定義できるようになりました。インターフェイス制約を利用して、T を数値に制限できます。

func add[T Number](a, b T) T {
    return a + b
}
ログイン後にコピー

ここで、制約 Number は golang.org/x/exp/constraints パッケージを使用して定義されています。

type Number interface {
    constraints.Integer | constraints.Float
}
ログイン後にコピー

この制約により、T が次の型であることが保証されます。 constraints.Integer またはconstraints.Float.

Using Generic のいずれかを満たします。関数

この汎用の加算関数は、任意の数値型の引数を処理できます。ただし、両方の引数が同じ型である必要があることに注意することが重要です。例:

fmt.Println(add(1, 2))     // 3
fmt.Println(add(a, b))     // 3
fmt.Println(add(1.5, 3.2)) // 4.7
ログイン後にコピー

add(2.5, 2) などの型を混合しようとすると、コンパイル エラーが発生します。

複素数のサポート

数値制約を拡張して複素数を含めることができますtype:

type Number interface {
    constraints.Integer | constraints.Float | constraints.Complex
}
ログイン後にコピー

複合型でサポートされているにもかかわらず、サポートされる演算子は依然として算術演算子 、 - 、 * 、 / のみです。モジュラス % およびビット演算子は、複合型ではサポートされていません。

以上がGo で数値型のジェネリック関数を作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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