In Python und Ruby gibt es also den Splat-Operator (*) zum Entpacken eines Arrays als Argumente. In Javascript gibt es die Funktion .apply (). Gibt es eine Möglichkeit, ein Array / Slice als Funktionsargumente in Go zu entpacken? Alle Ressourcen dafür wären auch großartig!
Etwas in dieser Richtung:
func my_func(a, b int) (int) {
return a + b
}
func main() {
arr := []int{2,4}
sum := my_func(arr)
}
Ich entschuldige mich, wenn ich syntaktische / verschiedene Fehler mache. Ich bin neu zu gehen.
go
argument-unpacking
Eatonphil
quelle
quelle
arr
ist es kein Array. Es ist eine Scheibe .Antworten:
Sie können eine Vararg-Syntax ähnlich C verwenden:
Jetzt können Sie so viele Dinge zusammenfassen, wie Sie möchten. Beachten Sie das Wichtige
...
danach, wenn Sie diemy_func
Funktion aufrufen .Laufendes Beispiel: http://ideone.com/8htWfx
quelle
Entweder ist Ihre Funktion varargs, in dem Sie ein Slice mit der
...
Notation verwenden können, wie Hunter McMillen zeigt, oder Ihre Funktion hat eine feste Anzahl von Argumenten und Sie können sie beim Schreiben Ihres Codes entpacken.Wenn Sie dies wirklich dynamisch für eine Funktion mit einer festen Anzahl von Argumenten tun möchten, können Sie Reflection verwenden:
quelle
https://play.golang.org/p/2nN6kjHXIsd
Ich hatte einen Grund, einige Vars aus einer Map [String] -String mit einfachen Anführungszeichen um einige von ihnen sowie ohne zu entpacken. Hier ist die Logik dafür und der Play Link oben hat das voll funktionsfähige Snippet.
Welches präsentiert sich sauber für eine mssql-Abfrage als:
quelle
Nein, dafür gibt es in der Sprache keine direkte Unterstützung. Python und Ruby sowie Javascript, das Sie erwähnen; sind alle dynamischen / Skriptsprachen. Go ist beispielsweise C viel näher als jeder dynamischen Sprache. Die Funktion 'Anwenden' ist praktisch für dynamische Sprachen, für statische Sprachen wie C oder Go jedoch von geringem Nutzen.
quelle