Ich schreibe eine Funktion, die eine Folge von Zahlen mit variabler Länge zurückgibt:Entspricht in Gehe zu einem C++ Vektor <int>?
func fib(n int) ??? {
retval := ???
a, b := 0, 1
for ; n > 0; n-- {
??? // append a onto retval here
c := a + b
a = b
b = c
}
}
Es beobachtet werden kann, dass die endgültige Länge der zurückgegebenen Sequenz n
sein wird. Wie und was sollte fib
zurückkehren, um idiomatische Go zu erreichen? Wenn die Länge nicht im Voraus bekannt war, wie würden sich der Rückgabewert und die Verwendung unterscheiden? Wie füge ich Werte in retval
ein?
Sie können den Rückgabewert nennen und Sachen damit machen ?! Das ist großartig! –
Ihre Antwort ist Community-Wiki, ich vermute, Sie werden Ihre wohlverdienten Punkte nicht bekommen, vielen Dank für eine gute Antwort. –
"Innerhalb einer Liste von [function] Parametern oder Ergebnissen müssen die Namen (IdentifierList) entweder alle vorhanden sein oder alle nicht vorhanden sein. Wenn vorhanden, steht jeder Name für ein Element (Parameter oder Ergebnis) des angegebenen Typs. jeder Typ steht für einen Eintrag dieses Typs. Parameter- und Ergebnislisten sind immer in Klammern gesetzt, außer dass bei genau einem unbenannten Ergebnis dieser als nicht aufgezeichneter Typ geschrieben werden kann. " http://golang.org/doc/go_spec.html#Function_types – peterSO