Go での汎用数値関数の作成
Go では、さまざまな数値型を扱うときに、次のような関数が必要になることがあります。任意の数値データ。ここでは、Go 1.18 以降でこのユースケースに対処する方法と、以前のバージョンで考えられる解決策を検討します。
Go 1.18 以降:
型の導入によりGo 1.18 ではパラメータを使用するため、ジェネリック関数の定義は簡単です。
func add[T Number](a, b T) T { return a + b; }
ここで、T は型パラメータを表し、 Number インターフェイスによって制限されます。 golang.org/x/exp/constraints パッケージを使用して定義されたこのインターフェイスは、T が数値型であることを保証します。このアプローチでは、任意の 2 つの数値型 (整数または浮動小数点) を引数として使用でき、関数は同じ型の結果を返します。
Go の以前のバージョン:
以前の Go バージョンでは、これを処理する方法がいくつかあります状況:
結論:
推奨されるソリューションは、使用されている Go バージョンによって異なります。 Go 1.18 以降では、型パラメーターと Number 制約を使用するジェネリック関数アプローチが最も簡潔で効率的です。以前のバージョンの場合、float に変換するか、型固有の関数を管理するかを選択する必要があります。
以上がGo でジェネリック数値関数を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。