go tail-recursion tail-call-optimization

Optimización de llamadas a cola en Go



tail-recursion tail-call-optimization (2)

Una pregunta relativamente aleatoria y probablemente trivial: ¿el lenguaje de programación Go, a partir de ahora, optimiza las llamadas de cola? Si no, ¿al menos optimiza las llamadas recursivas de una función a sí misma?


No es asi. Tampoco hay ningún plan de acuerdo con el equipo de desarrollo central en la lista de correo.


Todo lo que puede encontrar a través de Internet, que "Go admite recuentos de tailable en algunos casos", y que se informó en la lista de correo :

Ya está ahí en 6g / 8g para ciertos casos, y en gccgo de manera más general.

Actualmente, no planeamos cambiar el idioma para exigir que los compiladores implementen la optimización de llamadas finales en todos los casos. Si debe tener una llamada de cola, usa un bucle o una instrucción goto.

Para obtener esos casos, será mejor que profundices en la fuente de golang , que está abierta.