[]string
es una matriz de cadenas
Técnicamente, es un segmento que hace referencia a una matriz subyacente.
y también lo usamos ...string
como parámetro.
¿Cuál es la diferencia?
Con respecto a la estructura, nada en realidad. El tipo de datos resultante de ambas sintaxis es el mismo.
La ...
sintaxis del parámetro lo convierte en un parámetro variable. Aceptará cero o más string
argumentos y hará referencia a ellos como un segmento.
Con respecto a la llamada f
, puede pasar una porción de cadenas al parámetro variadic con la siguiente sintaxis:
func f(args ...string) {
fmt.Println(len(args))
}
args := []string{"a", "b"}
f(args...)
Esta sintaxis está disponible para el segmento construido usando la sintaxis literal o el segmento que representa el parámetro variadic (ya que realmente no hay diferencia entre ellos) .
http://play.golang.org/p/QWmzgIWpF8
[]string
es una porción, no una matriz. Las diferencias entre una matriz y un corte son sutiles pero importantes.