[]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.[]string
sintaxis. Agregaré más de la cita a mi respuesta para que sea más clara. :-)println
funcione con puntos suspensivos? aquí puedes encontrar mis experimentos. Si alguien desea algunas funciones de depuración de impresión, vaya a ver mi juego.Ambos crean una matriz de cadenas, pero la diferencia está en cómo se llama.
func f(args ...string) { } // Would be called like this: f("foo","bar","baz");
Esto le permite aceptar un número variable de argumentos (todos del mismo tipo)
Un gran ejemplo de esto es
fmt.Print
y amigos, que pueden aceptar tantos argumentos como desee.fuente
def fn(*args)
construcción de Python .Esto es lo que quieres:
var args []string = []string{"A", "B", "C"} func Sample(args ...string) { for _, arg := range args { fmt.Println(arg) } } func main() { Sample(args...) }
Jugar: http://play.golang.org/p/N1ciDUKfG1
fuente
Simplifica los parámetros de su función. Aquí está un ejemplo ( https://play.golang.org/p/euMuy6IvaM ): Método SampleEllipsis acepta de cero a muchos parámetros del mismo tipo, pero en el método SampleArray es obligatorio args a ser declaradas.
package main import "fmt" func SampleEllipsis(args ...string) { fmt.Printf("Sample ellipsis : %+v\n",args) } func SampleArray(args []string) { fmt.Println("Sample array ") SampleEllipsis(args...) } func main() { // Method one SampleEllipsis([]string{"A", "B", "C"}...) // Method two SampleEllipsis("A", "B", "C") // Method three SampleEllipsis() // Simple array SampleArray([]string{"A", "B", "C"}) // Simple array SampleArray([]string{}) }
Devoluciones :
fuente