From f8550edc9a9a4be93e344137b95a8c279e1d16b1 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 6 Jun 2014 14:17:29 -0400 Subject: [PATCH] 5.4.3 --- eBook/05.4.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/eBook/05.4.md b/eBook/05.4.md index 38049ca..f29f2f0 100644 --- a/eBook/05.4.md +++ b/eBook/05.4.md @@ -1,6 +1,6 @@ ## 啊哦,亲,你看得也太快了。。。还没翻译完呢 0 0 -要不等到 **2014 年 6 月 7 日** 再来看看吧~~ +要不等到 **2014 年 6 月 8 日** 再来看看吧~~ 这里还有一些其它的学习资源噢~ @@ -236,3 +236,21 @@ The variable i is now: -1 ## 5.4.3 无限循环 +条件语句是可以被省略的,如 `i:=0; ; i++` 或 `for { }` 或 `for ;; { }`(`;;` 会在使用 gofmt 时被移除):这些循环的本质就是无限循环。最后一个形式也可以被改写为 `for true { }`,但一般情况下都会直接写 `for { }`。 + +如果 for 循环的头部没有条件语句,那么就会认为条件永远为 true,因此循环体内必须有相关的条件判断以确保会在某个时刻退出循环。 + +想要直接退出循环体,可以使用 break 语句(第 5.5 节)或 return 语句直接返回(第 6.1 节)。 + +但这两者之间有所区别,break 只是退出当前的循环体,而 return 语句提前对函数进行返回,不会执行后续的代码。 + +无限循环的经典应用是服务器,用于不断等待和接受新的请求。 + +``` +for t, err = p.Token(); err == nil; t, err = p.Token() { + ... +} +``` + +## 5.4.4 for-range 结构 +