[]string è un array di stringhe
Tecnicamente è una fetta che fa riferimento a un array sottostante
e usiamo anche ...stringcome parametro.
Qual è la differenza?
Per quanto riguarda la struttura, niente di veramente. Il tipo di dati risultante da entrambe le sintassi è lo stesso.
La ...sintassi del parametro crea un parametro variadico. Accetterà zero o più stringargomenti e li farà riferimento come una sezione.
Per quanto riguarda la chiamata f, puoi passare una sezione di stringhe nel parametro variadic con la seguente sintassi:
func f(args ...string) {
fmt.Println(len(args))
}
args := []string{"a", "b"}
f(args...)
Questa sintassi è disponibile sia per la sezione costruita utilizzando la sintassi letterale, sia per la sezione che rappresenta il parametro variadico (poiché non c'è davvero alcuna differenza tra loro) .
http://play.golang.org/p/QWmzgIWpF8
[]stringè uno slice, non un array. Le differenze tra un array e uno slice sono sottili ma importanti.