go语言循环只有for语句,没有whilie, do while这些语句。
for 的第一种用法,也是所有语言中最常见的一种,跟C语言一样, 只是for后面省略了( ) 圆括号。
英文官方的表达跟准确:
for init; condition; post {
}
/*
init: 一般为赋值表达式,给控制变量赋初值;
condition: 关系表达式或逻辑表达式,循环控制条件;
post: 一般为赋值表达式,给控制变量增量或减量。
*/
for 的第二种用法,其实就是while,只是go设计的理念是要简单简洁,不想多增加一个关键词而已。
for condition {
}
//condition: 关系表达式或逻辑表达式,循环控制条件;
for 的第二种用法,就是whiile, 其执行流程如下:
for的第三种用法,死循环法:
for {
}
我在for循环这里我犯了了一个严重的错误,代码先放上来:
package main
import "fmt"
func main() {
for i := 0; i >=100; i++ {
fmt.Println(i)
}
}
我期盼这些代码会显示0到100,结果悲剧了,啥都没显示,程序就结束了。啥原因呢?我深入分析一下:
for 初始条件; 终止条件或者说结束条件; 自增/自减 {
循环体内代码
}
这个for循环是如何执行的:
第一步:做初始条件的赋值
第二步:判断终止条件是否达到,如果没达到终止条件则执行循环体内的代码,然后再执行第三步。
第三步:执行自增或自减。
其实:上面的想法是错误的,真正正确的for语句执行流程应该是下面这样的:
for a; b; c {
d
}
执行顺序:
先执行a
在判断b是否为真,若为真
执行循环体d,
执行c
然后再次判断b是否为真,若为真
执行循环体d
执行c
.....
直到b为假,跳出循环。
切记:表达式b不是终止条件,而是循环控制条件。
只有表达式b是真时,才执行需要循环体语句d,
如果表达式b为假,则直接终止循环。不会执行循环体语句d,也不会执行表达式c做自增或自减运算。
搞懂了这个之后,我修改一下代码,就如期盼的一样,正确显示0--100的数字了。代码如下:
package main
import "fmt"
func main() {
for i := 0; i <=100; i++ {
fmt.Println(i)
/*
for i ==40 {
fmt.Println("已经到了40了!")
break
}
*/
}
}