[]string
ist ein String-Array
Technisch gesehen ist es ein Slice, das auf ein zugrunde liegendes Array verweist
und wir verwenden auch ...string
als 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 string
Argumente akzeptiert und als Slice referenziert.
In Bezug auf den Aufruf f
kö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
[]string
ist ein Slice, kein Array. Die Unterschiede zwischen einem Array und einem Slice sind subtil, aber wichtig.