for
Go简洁得只有一种循环结构:for
循环
对,Go并没有while!
你一定很好奇怎么实现类似while (true)这样的死循环?
先看看Go中标准的for语句规格:
1 | for i := 0; i < 10; i++ { |
跟c很像,但是有两个地方需要注意:
- 没有了
( )
包括条件 - 开始条件,结束条件,循环条件都可以省略!
如果省略了前后条件的for循环看起来是这样:
1 | func main() { |
而Go版本的while就是省略了所有循环条件:
1 | func main() { |
突然觉得用了好久的while语句好像是有点多余。。
if
跟 for 一样,if
语句也是不用( )
1 | func test() { |
if
语句可以在条件之前执行一个简单的语句:
1 | func test(a,b) { |
只是由这个语句定义的变量的作用域仅在if
范围之内,和对应的else
范围。
switch
1 | func main() { |
switch 语句用法和其他语言差不多,只允许有一个default,同样允许在switch语句里面赋值.
fallthrough
Go 提供fallthrough 可以执行执行完一个case之后继续下一个:
1 | func main() { |
defer
Go 提供defer语句,实现延迟函数的执行直到上层函数返回:
1 | func main() { |
结果:
counting
done
9
8
7
6
5
4
3
2
1
0
暂时先知道defer可以实现延时执行功能。
总结
- Go中的while使用for实现
- switch可以使用fallthrough继续下一个case分支
- defer 关键字可以提供延时执行效果