23

私はグーグルのGo言語で書かれたいくつかのコードを調べていました、そして私はこれに出くわしました:

func Statusln(a ...interface{})
func Statusf(format string, a ...interface{})

...どういう意味かわかりません。誰か知っていますか?

4

3 に答える 3

31

これは、可変数の引数を使用してStatuslnを呼び出すことができることを意味します。たとえば、次のコマンドでこの関数を呼び出します。

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

パラメータに次の値を割り当てます。

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

したがって、このスライスaを反復処理して、パラメーターの数に関係なく、すべてのパラメーターを処理できます。可変個引数引数の適切で一般的な使用例は、たとえばfmt.Printf()です。これは、フォーマット文字列と、フォーマット文字列に従ってフォーマットされる可変数の引数を取ります。

于 2012-04-12T17:41:32.017 に答える
6

可変長引数です

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

この署名を例にとってみましょう。ここでは、印刷する文字列が1つあることを定義しますが、この文字列は、(実際には、fmtパッケージからこの関数を取得した)substitudeに(任意のタイプの)可変数のもので補間できます。

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

ここでわかるように、可変個引数を使用すると、1つの署名がすべての長さに適合します。

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

于 2012-04-12T17:35:05.433 に答える
1

それらは可変個引数関数です。それらは可変数の引数を受け入れます。

于 2015-05-24T22:27:19.510 に答える