Entonces, en Python y Ruby existe el operador splat (*) para descomprimir una matriz como argumentos. En Javascript existe la función .apply (). ¿Hay alguna forma de descomprimir una matriz / porción como argumentos de función en Go? ¡Cualquier recurso para esto también sería genial!
Algo parecido a esto:
func my_func(a, b int) (int) {
return a + b
}
func main() {
arr := []int{2,4}
sum := my_func(arr)
}
Me disculpo si estoy cometiendo errores sintácticos / variados. Soy nuevo en Go.
go
argument-unpacking
Eatonphil
fuente
fuente
arr
no es una matriz. Es una rebanada .Respuestas:
Puede usar una sintaxis de vararg similar a C:
Ahora puedes sumar tantas cosas como quieras. Observe el importante
...
después cuando llame a lamy_func
función.Ejemplo de ejecución: http://ideone.com/8htWfx
fuente
O tu función es varargs, en la que puedes usar un segmento con la
...
notación como muestra Hunter McMillen, o tu función tiene un número fijo de argumentos y puedes descomprimirlos al escribir tu código.Si realmente desea hacer esto dinámicamente en una función de un número fijo de argumentos, puede usar la reflexión:
fuente
https://play.golang.org/p/2nN6kjHXIsd
Tenía una razón para descomprimir algunas variables de una cadena de mapa [cadena] con comillas simples alrededor de algunas de ellas, así como sin ellas. Aquí está la lógica y el enlace de reproducción en la parte superior tiene el fragmento de trabajo completo.
Que se presenta limpiamente para una consulta mssql como:
fuente
No, no hay soporte directo para esto en el idioma. Python y Ruby, así como Javascript que estás mencionando; son todos lenguajes dinámicos / de secuencias de comandos. Go está mucho más cerca, por ejemplo, de C que de cualquier lenguaje dinámico. La funcionalidad 'aplicar' es útil para lenguajes dinámicos, pero de poca utilidad para lenguajes estáticos como C o Go,
fuente