2012-04-12 10 views

risposta

25

Significa che è possibile chiamare Statusln con un variable number of arguments. Ad esempio, la chiamata questa funzione con:

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

assegnerà il parametro al seguente valore:

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

Così, si può iterare su questa fetta di un e processo di tutti i parametri, non importa quanti ce ne siamo. Un caso d'uso valido e popolare per argomenti variadici è ad esempio fmt.Printf() che accetta una stringa di formato e un numero variabile di argomenti che saranno formattati in base alla stringa di formato.

+0

+1, Grazie per il collegamento alla documentazione, – Ali

+0

FYI. Se hai già più argomenti in una sezione, applicali a una funzione variadica usando 'func (slice ...)' come 'Statusln (a ...)' nell'esempio sopra. – thuzhf

5

E 'argomento di lunghezza variabile

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

Prendiamo ad esempio questa firma. Qui definire che abbiamo una stringa da stampare, ma questa stringa possiamo essere interpolated con numero variabile di cose (di tipo arbitrario) a substitude (in realtà, ho preso questa funzione dalla confezione fmt):

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

Come si può vedere qui, con argomenti variadici, una firma si adatta a tutte le lunghezze.

Inoltre, è possibile specificare un tipo esatto come ...int.

+1

che cosa significa? che il numero di argomenti non è specificato? – Chaos

+0

@shailesh Ho aggiunto l'esempio –

+0

@ om-nom-nom Grazie, è abbastanza chiaro ora – Chaos

Problemi correlati