Tak więc w Pythonie i Rubim jest operator splat (*) do rozpakowywania tablicy jako argumentów. W JavaScript jest funkcja .apply (). Czy istnieje sposób rozpakowania tablicy / wycinka jako argumentów funkcji w Go? Wszelkie zasoby do tego również byłyby świetne!
Coś w tym stylu:
func my_func(a, b int) (int) {
return a + b
}
func main() {
arr := []int{2,4}
sum := my_func(arr)
}
Przepraszam, jeśli popełniam błędy składniowe / różne. Jestem nowy w Go.
go
argument-unpacking
eatonphil
źródło
źródło
arr
nie jest tablicą. To jest kawałek .Odpowiedzi:
Możesz użyć składni vararg podobnej do C:
Teraz możesz zsumować tyle rzeczy, ile chcesz. Zwróć uwagę na ważne
...
po wywołaniumy_func
funkcji.Uruchomiony przykład: http://ideone.com/8htWfx
źródło
Albo twoją funkcją jest varargs, w której możesz użyć plastra z
...
notacją taką, jak pokazuje Hunter McMillen, albo twoja funkcja ma stałą liczbę argumentów i możesz je rozpakować podczas pisania kodu.Jeśli naprawdę chcesz to zrobić dynamicznie na funkcji o stałej liczbie argumentów, możesz użyć refleksji:
źródło
https://play.golang.org/p/2nN6kjHXIsd
Miałem powód, aby rozpakować kilka zmiennych z łańcucha map [string] z pojedynczymi cudzysłowami wokół niektórych z nich, a także bez. Oto logika, a link do odtwarzania u góry zawiera pełny działający fragment.
Który przedstawia czysto dla zapytania mssql jako:
źródło
Nie, nie ma bezpośredniego wsparcia w tym języku. Python i Ruby, a także Javascript, o którym wspominasz; są językami dynamicznymi / skryptowymi. Go jest dużo bliższe na przykład C niż jakiemukolwiek dynamicznemu językowi. Funkcja „zastosuj” jest przydatna w przypadku języków dynamicznych, ale mało przydatna w przypadku języków statycznych, takich jak C lub Go,
źródło