go

¿Cuál es la diferencia entre[] cadena y... cadena en golang?



(4)

[]string es una matriz de cadenas

Técnicamente es una porción que hace referencia a una matriz subyacente

y también usamos ...string como parámetro

que es la diferencia?

Con respecto a la estructura, nada realmente. El tipo de datos resultante de ambas sintaxis es el mismo.

La sintaxis del parámetro ... hace un parámetro variable. Aceptará cero o más argumentos de string , y los referenciará como un corte.

Con respecto a llamar a f , puede pasar un trozo de cadenas en el 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 creado utilizando la sintaxis literal, o el segmento que representa el parámetro variadic (ya que en realidad no hay diferencia entre ellos) .

http://play.golang.org/p/QWmzgIWpF8

en lenguaje Go

[]string es una matriz de cadenas

y también usamos ...string como parámetro

que es la diferencia?

definición de la función:

func f(args ...string) {}

y puedo llamar a esta función como a continuación?

args := []string{"a", "b"} f(args)


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 una cantidad variable de argumentos (todos del mismo tipo)

Un buen ejemplo de esto es fmt.Print and friends, que puede aceptar la menor o la mayor cantidad de datos que desee.


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


Simplifica tus parámetros de función. Aquí hay 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 declarar args .

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 :

Sample ellipsis : [A B C] Sample ellipsis : [A B C] Sample ellipsis : [] Sample array Sample ellipsis : [A B C] Sample array Sample ellipsis : []