私はGoogleの囲碁の言語で書かれたいくつかのコードを通過し、私はこれに出くわした:私は何...
手段を理解していない"..."とは、go関数宣言のパラメータの隣にあるときを意味しますか?
func Statusln(a ...interface{})
func Statusf(format string, a ...interface{})
。誰か知っていますか?
私はGoogleの囲碁の言語で書かれたいくつかのコードを通過し、私はこれに出くわした:私は何...
手段を理解していない"..."とは、go関数宣言のパラメータの隣にあるときを意味しますか?
func Statusln(a ...interface{})
func Statusf(format string, a ...interface{})
。誰か知っていますか?
これは、variable number of argumentsでStatuslnを呼び出すことができることを意味します。
Statusln("hello", "world", 42)
次の値Aのパラメータを割り当てます:この関数を呼び出すと、たとえば、それで
a := []interface{}{"hello", "world", 42}
、あなたはどんなに多くは、このスライスAとプロセス上のすべてのパラメータを繰り返すことはできませんあります。可変引数のよく利用されるケースは、フォーマット文字列と、フォーマット文字列に従ってフォーマットされる可変数の引数をとるfmt.Printf()です。
これは、可変長引数
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、ドキュメントへのリンク、ありがとう – Ali
FYI。あるスライスに複数のargsがある場合は、上記の例で 'Statusln(a ...) 'のように' func(slice ...)'を使って可変長関数に適用してください。 – thuzhf