Sentencia goto en Lua

Lua 循环Bucles en Lua

La sentencia goto en Lua permite transferir el flujo de control incondicionalmente a una sentencia etiquetada.

Sintaxis

El formato de la sintaxis es el siguiente:

goto Label

El formato de la etiqueta (Label) es:

:: Label ::

El siguiente ejemplo utiliza goto en una sentencia de condición:

Ejemplo 1

local a = 1
::label:: print("--- goto label ---")

a = a+1
if a < 3 then
    goto label   -- Cuando a es menor que 3, salta a la etiqueta label
end

El resultado de salida es:

--- goto label ---
--- goto label ---

Del resultado de salida se puede observar que se imprimió una vez de más.--- goto label ---。

El siguiente ejemplo demuestra que se pueden establecer múltiples sentencias en la etiqueta (label):

Ejemplo 2

i = 0
::s1:: do
  print(i)
  i = i+1
end
if i>3 then
  os.exit()   --i es mayor que3salir cuando
end
goto s1

El resultado de salida es:

0
1
2
3

Con goto, podemos implementar la funcionalidad de continue:

Ejemplo 3

for i=1, 3 do
    if i <= 2 then
        print(i, "yes continue")
        goto continue
    end
    print(i, " no continue")
    ::continue::
    print([[i'm end]])
end

El resultado de salida es:

1   yes continue
i'm end
2   yes continue
i'm end
3    no continue
i'm end

Lua 循环Bucles en Lua

Otras extensiones