2012-04-12 6 views

答えて

25

これは、variable number of argumentsでStatuslnを呼び出すことができることを意味します。

Statusln("hello", "world", 42) 

次の値Aのパラメータを割り当てます:この関数を呼び出すと、たとえば、それで

a := []interface{}{"hello", "world", 42} 

、あなたはどんなに多くは、このスライスAとプロセス上のすべてのパラメータを繰り返すことはできませんあります。可変引数のよく利用されるケースは、フォーマット文字列と、フォーマット文字列に従ってフォーマットされる可変数の引数をとるfmt.Printf()です。

+0

+1、ドキュメントへのリンク、ありがとう – Ali

+0

FYI。あるスライスに複数のargsがある場合は、上記の例で 'Statusln(a ...) 'のように' func(slice ...)'を使って可変長関数に適用してください。 – thuzhf

5

これは、可変長引数

func Printf(format string, v ...interface{}) (n int, err error) { 

は、例えば、この署名を取るです。あなたのよう

fmt.Printf("just i: %v", i) 
fmt.Printf("i: %v and j: %v",i,j) 

:ここでは、我々は印刷する1つの文字列を持っていることを定義しますが、この文字列は(任意のタイプの)物事の可変数substitudeするとinterpolatedをすることができます(実際には、私はFMTパッケージからこの関数を取りました)ここでは、可変的な議論で、すべての長さに合った署名を見ることができます。

さらに、...intのような正確なタイプを指定することができます。

+1

それが何を意味するのでしょうか?引数の数は指定されていませんか? – Chaos

+0

@shailesh私は例を追加しました –

+0

@ om-nom-nomありがとう、それは今かなり明確です – Chaos

関連する問題