開発プロセス中、無限の数のパラメーターを渡す必要がある状況によく遭遇します。たとえば、2 つ以上の数値の合計を計算したり、文字列を出力したりします。このとき、Go言語関数の不定パラメータの特性を利用して問題を解決することができます。
Go 言語では、... の形式を使用して関数の変数パラメーターを表します。変数パラメータのタイプは同じでも異なっていてもかまいません。不定パラメータを使用する場合、関数は任意の数のパラメータを受け取ることができます。パラメータは空のセットであっても、複数の要素を含むセットであっても構いません。
- 不定パラメータ関数の基本構文
以下は、... を使用して不定パラメータを表し、パラメータ配列を走査する関数を定義する簡単な例です。そして、それを出力します:
1 2 3 4 5 6 7 8 | func Sum(nums ... int ) {
fmt. Print (nums, " " )
total := 0
for _, num := range nums {
total += num
}
fmt. Println (total)
}
|
ログイン後にコピー
上記の関数の機能は、一連の整数の合計を計算することです。次に、この関数を呼び出します:
1 2 | Sum( 1 , 2 , 3 , 4 )
Sum( 1 , 2 , 3 )
|
ログイン後にコピー
実行結果は次のとおりです:
Sum 関数を一度に 2 回呼び出し、最初の回で 4 つのパラメーターを渡していることがわかります。 、および 3 つのパラメーターが渡され、対応する合計が正常に計算されました。
- 不定パラメータ関数にスライスを使用する
スライスを使用して不定パラメータ関数を処理できます。スライスで可変パラメータを使用する場合、最初にすべてのパラメータをスライスにロードし、その後、そのスライスを後続の操作に使用できます。
次の例では、最初に make() メソッドを使用してすべてのパラメータを含むスライスを初期化し、次にスライスを走査して合計を計算します。
1 2 3 4 5 6 7 | func Sum(nums ... int ) {
total := 0
for _, num := range nums {
total += num
}
fmt. Println (total)
}
|
ログイン後にコピー
Sum() 関数を呼び出します。繰り返しますが、渡されるパラメーターは前と同じです:
1 2 | nums := [] int { 1 , 2 , 3 , 4 }
Sum(nums...)
|
ログイン後にコピー
この関数の実行結果は前と同じで、出力は次のとおりです:
- 通常のパラメーターと組み合わせて使用されます
#Varies パラメトリック関数は、通常のパラメーターと組み合わせると非常に便利です。たとえば、出力する情報を表す文字列パラメータを指定した可変引数関数を使用できます。例:
1 2 3 | func PrintStrings(separator string , strs ... string ) {
fmt. Println (strings.Join(strs, separator))
}
|
ログイン後にコピー
この関数の機能は、指定された区切り文字を介していくつかの文字列を接続し、それらを出力することです。まずこの関数を呼び出し、接続する 3 つの文字列と接続記号を渡します。
1 | PrintStrings( ", " , "a" , "b" , "c" )
|
ログイン後にコピー
実行結果は次のとおりです。
可変パラメータ関数の使用の詳細-
不定パラメータ関数を使用する場合、いくつかの詳細に注意する必要があります。注意すべき詳細は次のとおりです。
不定パラメータは関数の最後のパラメータである必要があります。 - 可変パラメータ関数と通常関数の優先順位に注意する必要があります。
- 不定のパラメータを関数のパラメータとして渡すことができ、これらのパラメータの値はポインタ操作を使用して変更できます。
-
概要-
可変パラメータ関数を使用すると、動的な数のパラメータを簡単に処理できるため、コードの作成がより簡単かつ柔軟になります。可変パラメータ関数を呼び出すときは、所定の方法でパラメータを渡す必要があることに注意してください。
この記事を通じて、Go 言語の関数変数パラメーターの構文と、変数パラメーター関数を使用して動的な数のパラメーターを処理する方法を学びました。開発では、可変パラメーター関数を合理的に使用すると、コードの品質と効率が大幅に向上します。
以上がgolang関数の不定パラメータの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。