¿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ámetroque 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) .
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...)
}
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 : []