#不定パラメータとは、関数によって渡されるパラメータの数が不定であることを意味します。
1. 関数の定義
まず、可変パラメーターを使用して関数を定義する方法を見てみましょう:
func YourFun(v... interface{}){ }
この関数定義は、任意の型の任意の数のパラメータを受け入れる関数を定義します。ここでの特別な構文は 3 つのドット "...
" です。変数の後に 3 つのドットを追加すると、その時点から不定パラメータが受け入れられることを意味します。Python とは異なり、golang の不定パラメータがここにある場合は "interface{}
" が特定の型に置き換えられると、その型の変数パラメータのみを受け入れることができます。
2. "..."
上には、3 つの点「...」の特別なマークが表示されます。では、これら 3 つの点「...」は何をするのでしょうか?
2.1 不定パラメータ
上で述べたように、不定パラメータを定義すると、このパラメータを起点として不定パラメータを記録することになります。
2.2 スライスの逆参照
可変パラメータ関数に複数の値を渡したい場合は、各パラメータを手動で記述するか、関数にスライスを渡すことができます:
YourFunc (YourSlice...)
「...」を使用できます。
" スライス内の対応するパラメーターを関数に渡します。 Python の「*args」に相当します。
ここで注意すべき点は、スライスの逆参照は現在、可変パラメータ関数にパラメータを渡す場合にのみ使用できることです。他の場所で使用すると、エラーが報告されます。
3. トラバーサル パラメーター
例を見てみましょう:
func P (v... string) { for _,item := range v { fmt.Println("item:",item) } } func main() { var l []string l = append(l,"a") l = append(l,"b") fmt.Println("l is ",l) P(l...) }
ここで表示される結果は、最初に完全なリスト、次に各要素です。 :
l is [a b] item: a item: b
for...range
を使用すると、不定パラメータ v 内の各パラメータをトラバースできます。ここでは、変数パラメータのタイプを文字列に設定しているため、文字列タイプのパラメータのみを受け入れることができます。
おすすめの関連記事とチュートリアル: golang チュートリアル
以上がgolangの不定パラメータの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。