golang语言学第四课:循环

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

        }
        */



    }
}

 

 
posted @ 2018-12-28 20:12  小熊猫2010  阅读(159)  评论(0编辑  收藏  举报