Lua 语言中的 goto 语句允许将控制流程无条件地转到被标记的语句处。
语法
语法格式如下所示:
goto Label
Label 的格式为:
:: Label ::
以下实例在判断语句中使用 goto:
实例 1
local a = 1
::label:: print("--- goto label ---")
a = a+1
if a < 3 then
goto label -- a 小于 3 的时候跳转到标签 label
end
::label:: print("--- goto label ---")
a = a+1
if a < 3 then
goto label -- a 小于 3 的时候跳转到标签 label
end
输出结果为:
--- goto label ------ goto label ---
从输出结果可以看出,多输出了一次 --- goto label ---。
以下实例演示了可以在 lable 中设置多个语句:实例 2
i = 0
::s1:: do
print(i)
i = i+1
end
if i>3 then
os.exit() -- i 大于 3 时退出
end
goto s1
::s1:: do
print(i)
i = i+1
end
if i>3 then
os.exit() -- i 大于 3 时退出
end
goto s1
输出结果为:
0123
有了 goto,我们可以实现 continue 的功能:
实例 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
if i <= 2 then
print(i, "yes continue")
goto continue
end
print(i, " no continue")
::continue::
print([[i'm end]])
end
输出结果为:
1 yes continuei'm end2 yes continuei'm end3 no continuei'm end