開発プロセス中、無限の数のパラメーターを渡す必要がある状況によく遭遇します。たとえば、2 つ以上の数値の合計を計算したり、文字列を出力したりします。このとき、Go言語関数の不定パラメータの特性を利用して問題を解決することができます。
Go 言語では、... の形式を使用して関数の変数パラメーターを表します。変数パラメータのタイプは同じでも異なっていてもかまいません。不定パラメータを使用する場合、関数は任意の数のパラメータを受け取ることができます。パラメータは空のセットであっても、複数の要素を含むセットであっても構いません。
以下は、... を使用して不定パラメータを表し、パラメータ配列を走査する関数を定義する簡単な例です。そして、それを出力します:
func Sum(nums ...int) { fmt.Print(nums, " ") total := 0 for _, num := range nums { total += num } fmt.Println(total) }
上記の関数の機能は、一連の整数の合計を計算することです。次に、この関数を呼び出します:
Sum(1, 2, 3, 4) Sum(1, 2, 3)
実行結果は次のとおりです:
[1 2 3 4] 10 [1 2 3] 6
Sum 関数を一度に 2 回呼び出し、最初の回で 4 つのパラメーターを渡していることがわかります。 、および 3 つのパラメーターが渡され、対応する合計が正常に計算されました。
スライスを使用して不定パラメータ関数を処理できます。スライスで可変パラメータを使用する場合、最初にすべてのパラメータをスライスにロードし、その後、そのスライスを後続の操作に使用できます。
次の例では、最初に make() メソッドを使用してすべてのパラメータを含むスライスを初期化し、次にスライスを走査して合計を計算します。
func Sum(nums ...int) { total := 0 for _, num := range nums { total += num } fmt.Println(total) }
Sum() 関数を呼び出します。繰り返しますが、渡されるパラメーターは前と同じです:
nums := []int{1, 2, 3, 4} Sum(nums...)
この関数の実行結果は前と同じで、出力は次のとおりです:
10
func PrintStrings(separator string, strs ...string) { fmt.Println(strings.Join(strs, separator)) }
PrintStrings(", ", "a", "b", "c")
a, b, c
以上がgolang関数の不定パラメータの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。