openresty中实现类似PHP的continue语法

openresty 2023-06-08 684次浏览

前言

在PHP的开发中,我们经常会在for循环中使用continue语法来实现判断逻辑后跳转到指定的位置,这种方法在业务中非常实用,那在 OpenResty 中,其实本身没有continue的语法,但可以使用 goto 语句来模拟,达到跳转到指定的标签位置的目的。

具体地,可以使用 ::label:: 定义一个标签,然后使用 goto label 跳转到该标签位置。例如,以下代码演示了如何使用 goto 语句实现类似 continue 的逻辑:

for i = 1, 10 do
    if i % 2 == 0 then
        ngx.say("goto continue")
        goto continue
    end

    ngx.say(i)
    ::continue::
end

以上代码输出结果:

1
goto continue
3
goto continue
5
goto continue
7
goto continue
9
goto continue

在上述代码中,如果 i 是偶数,则跳转到标签 continue,否则输出 i 的值。标签 continue 的位置位于 ngx.say(i) 的后面,因此可以实现类似 continue 的效果。

需要注意的是,goto 语句可能会导致代码结构混乱,降低代码的可读性和可维护性。因此,应该尽量避免使用 goto 语句,尽量使用其他结构化的控制语句来实现相同的功能。

openresty中实现类似PHP的continue语法

喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址