私はグーグルのGo言語で書かれたいくつかのコードを調べていました、そして私はこれに出くわしました:
func Statusln(a ...interface{})
func Statusf(format string, a ...interface{})
...
どういう意味かわかりません。誰か知っていますか?
私はグーグルのGo言語で書かれたいくつかのコードを調べていました、そして私はこれに出くわしました:
func Statusln(a ...interface{})
func Statusf(format string, a ...interface{})
...
どういう意味かわかりません。誰か知っていますか?
これは、可変数の引数を使用してStatuslnを呼び出すことができることを意味します。たとえば、次のコマンドでこの関数を呼び出します。
Statusln("hello", "world", 42)
パラメータに次の値を割り当てます。
a := []interface{}{"hello", "world", 42}
したがって、このスライスaを反復処理して、パラメーターの数に関係なく、すべてのパラメーターを処理できます。可変個引数引数の適切で一般的な使用例は、たとえばfmt.Printf()です。これは、フォーマット文字列と、フォーマット文字列に従ってフォーマットされる可変数の引数を取ります。
可変長引数です
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
。
それらは可変個引数関数です。それらは可変数の引数を受け入れます。