Golang の可変パラメーター関数は、関数がさまざまな数のパラメーターを受け入れることができることを意味します。関数を定義するとき、3 つのドット「...」を使用して、パラメーターの数が固定されていないことを示し、これらのパラメーターがスライスにパックされます。
Golang では、関数のパラメーター リストに変数パラメーターは 1 つだけ含めることができ、通常はパラメーター リストの最後に配置されます。
たとえば、次は任意の数の整数の合計を計算する関数です:
func sum(nums ...int) int { total := 0 for _, num := range nums { total += num } return total }
関数シグネチャでは、3 つのドット "..." は不定のパラメーターを示すために使用されます。パラメータ名は「nums」、データ型は「int」であるため、「nums」は実際には整数のスライスです。
この関数を呼び出すときは、任意の数の整数をパラメータとして渡すことができ、パラメータの数を指定する必要はありません。
fmt.Println(sum(1, 2, 3)) // 输出 6 fmt.Println(sum(10, 20, 30, 40)) // 输出 100
不定パラメータ関数は、強力な柔軟性を備えており、パラメータの種類と数が異なります。以下は、2 つまたは 3 つの浮動小数点数の平均を計算する例です。
func avg(nums ...float64) float64 { sum := 0.0 for _, num := range nums { sum += num } return sum / float64(len(nums)) } fmt.Println(avg(1.0, 2.0)) // 输出 1.5 fmt.Println(avg(1.0, 2.0, 3.0)) // 输出 2.0
Go 言語では、関数呼び出し時に変数パラメーターもパラメーターの受け渡し順序に従う必要があることに注意してください。たとえば、次の例では、パラメータが逆の場合、関数はエラーを報告します。
func foo(num int, strs ...string) { fmt.Println(num) fmt.Println(strs) } foo("hello", "world", 1) // 报错!第一个参数应该是整数类型
関数内では、for ループを使用して、スライスを操作するように不定のパラメータを反復し、実行することができます。その中の各要素に対する操作。可変パラメータを処理した後、len() 関数を使用して可変パラメータの数を取得することもできます。
つまり、Golang では、可変パラメーター関数はプログラムの柔軟性と実用性を大幅に向上させることができ、不確実な数や種類のパラメーターを処理するのに非常に便利で高速です。
以上がgolangの変数パラメータの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。