Go 言語は従来の関数のオーバーロードをサポートしていませんが、名前付き関数を使用する: 異なるパラメーターまたは戻り値の型を持つ関数に一意の名前を作成する、ジェネリック (Go 1.18 以降) を使用する: 異なる型のパラメーターに対して同様の効果を実現できます。関数の単一バージョンを作成します。
Golang 関数のオーバーロードの実装
Golang では、従来の意味での関数のオーバーロードはサポートされていません。つまり、同じです。パラメータ リストまたは戻り値の型が異なる関数名の複数のバージョンです。ただし、次のメソッドを通じて関数のオーバーロードと同様の効果を実現できます:
1. 名前付き関数の使用
別のパラメーター リストや戻り値の型を関数に持たせることができます。例:
func Sum(a, b int) int { return a + b } func SumFloat(a, b float64) float64 { return a + b }
2. ジェネリックスの使用 (>= Go 1.18)
Go 1.18 ではジェネリックスが導入され、単一のバージョンの関数はコンパイル時にさまざまな種類の引数に対して作成されます。例:
func Sum[T numeric](a, b T) T { return a + b }
実用的なケース
長さを計算するために 2 つの関数を作成する必要があるとします。1 つの関数は文字列の長さの計算に使用され、もう 1 つの関数は文字列の長さの計算に使用されます。配列の長さを計算するために使用されます。
名前付き関数の使用
func StringLength(str string) int { return len(str) } func ArrayLength(arr []int) int { return len(arr) }
ジェネリックスの使用 (>= Go 1.18)
func Length[T any](data T) int { return len(data) }
以上がgolangで関数のオーバーロードを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。