Portanto, em Python e Ruby existe o operador splat (*) para descompactar um array como argumentos. Em Javascript existe a função .apply (). Existe uma maneira de descompactar uma matriz / fatia como argumentos de função em Go? Quaisquer recursos para isso também seriam ótimos!
Algo mais ou menos assim:
func my_func(a, b int) (int) {
return a + b
}
func main() {
arr := []int{2,4}
sum := my_func(arr)
}
Peço desculpas se estou cometendo erros sintáticos / variados. Sou novo em Go.
go
argument-unpacking
Eatonphil
fonte
fonte
arr
não é uma matriz. É uma fatia .Respostas:
Você pode usar uma sintaxe vararg semelhante a C:
Agora você pode somar quantas coisas quiser. Observe o importante
...
depois ao chamar amy_func
função.Exemplo de execução: http://ideone.com/8htWfx
fonte
Ou sua função é varargs, em que você pode usar uma fatia com a
...
notação como mostra Hunter McMillen, ou sua função tem um número fixo de argumentos e você pode descompactá-los ao escrever seu código.Se você realmente deseja fazer isso dinamicamente em uma função de número fixo de argumentos, pode usar reflexão:
fonte
https://play.golang.org/p/2nN6kjHXIsd
Tive um motivo para descompactar alguns vars de uma string de mapa [string] com aspas simples em torno de alguns deles, bem como sem. Aqui está a lógica para isso e o link play no topo tem o trecho de trabalho completo.
Que é apresentado de forma limpa para uma consulta mssql como:
fonte
Não, não há suporte direto para isso no idioma. Python e Ruby, bem como Javascript que você está mencionando; são todas linguagens dinâmicas / de script. Go está muito mais próximo, por exemplo, de C do que de qualquer linguagem dinâmica. A funcionalidade 'aplicar' é útil para linguagens dinâmicas, mas de pouco uso para linguagens estáticas como C ou Go,
fonte