ホームページ > バックエンド開発 > Golang > golangの不定パラメータの詳細説明

golangの不定パラメータの詳細説明

王林
リリース: 2019-12-07 09:21:06
オリジナル
3452 人が閲覧しました

golangの不定パラメータの詳細説明

#不定パラメータとは、関数によって渡されるパラメータの数が不定であることを意味します。

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート