Golang-Funktion und Funktionsvariablen-Semantik

7

Warum kann ich eine rekursive Funktion nicht als Variable definieren? Ich kann anscheinend beliebige Funktionen definieren, außer wenn sie rekursiv sind.

Dies ist legal:

%Vor%

Dies ist illegal:

%Vor%

Das ist legal und ich schätze, es ist nur, weil Sie f nach der Initialisierung herausfinden können:

%Vor%

Es sieht also so aus, als käme es auf die Funktion an, und Variablendeklarationen eines Funktionstyps werden anders behandelt, als wenn ich die Dokumentation lese, die ich nicht erwarten würde. Habe ich den Teil der Dokumentation vermisst, der das genau beschreibt?

Ich würde erwarten, dass der illegale Fall funktioniert, nur weil er in anderen Sprachen funktioniert. Wie in JavaScript:

%Vor%     
Daniel Williams 17.02.2015, 22:27
quelle

1 Antwort

21

Der folgende Code wäre der bevorzugte Weg, um das zu tun, was Sie beschreiben. Beachten Sie, dass Sie keine zusätzliche Variable erstellen müssen und auch keinen -Zeiger für eine Funktion haben:

%Vor%     
Tim Cooper 17.02.2015, 22:45
quelle

Tags und Links