[]string ist ein String-Array
Technisch gesehen ist es ein Slice, das auf ein zugrunde liegendes Array verweist
und wir verwenden auch ...stringals Parameter.
Was ist der Unterschied?
In Bezug auf die Struktur nichts wirklich. Der aus beiden Syntax resultierende Datentyp ist der gleiche.
Die ...Parametersyntax erstellt einen variadischen Parameter. Es werden null oder mehr stringArgumente akzeptiert und als Slice referenziert.
In Bezug auf den Aufruf fkönnen Sie ein Stück Zeichenfolgen mit der folgenden Syntax an den variadischen Parameter übergeben:
func f(args ...string) {
fmt.Println(len(args))
}
args := []string{"a", "b"}
f(args...)
Diese Syntax ist entweder für das Slice verfügbar, das mit der Literal-Syntax erstellt wurde, oder für das Slice, das den variadischen Parameter darstellt (da es wirklich keinen Unterschied zwischen ihnen gibt) .
http://play.golang.org/p/QWmzgIWpF8
[]stringist ein Slice, kein Array. Die Unterschiede zwischen einem Array und einem Slice sind subtil, aber wichtig.