开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map: ffor 循环语法和执行流程】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/625/detail/9574
for 循环语法和执行流程
目录:
一、基本语法
二、For 循环执行流程分析
一、基本语法
1、语法格式
for 循环变量初始化;循环条件;循环变量迭代{
循环操作(语句)
}
2、说明 for 循环四要素:
对 for 循环来说,有四个要素
要素1:循环变量初始化,也就是说需要有循环变量然后进行初始化。
要素2:循环条件,循环条件会判断循环是否继续执行。
要素3:循环操作(语句),也叫循环体,循环体就是要具体做的事情,完成的功能是什么。就像上个案例讲的 fmt.Println(“你好,尚硅谷”,i) 就是循环操作。
要素5:循环变量迭代
3、for 循环执行的顺序说明
(1)第一步首先执行循环变量的初始化,比如初始化 i:=1
(2)第二步执行循环条件的判断,比如判断 i<= 10
(3)如果循环条件为真,就执行循环体的循环操作:比如 fmt.Println(“...”)
(4)继续再执行循环变量迭代,比如 i++
(5)执行完后又反复执行 2,3,4 步骤,直到循环条件为假 False ,就退出 for 循环
可能这样讲解后还是不清晰,所以下面再次进行流程图的分析。
二、For 循环执行流程分析
1、For 循环的流程图
说明:
首先代码从最上面开始执行,进行变量初始化,放到之前的分析的话就是 i=1,执行完后进行条件的判断,如果为真就执行循环操作,只要循环条件不为假,就会一直循环下去,直到循环条件为假,就为 Flase 才会跳出循环,for 循环结束后如果下面还有代码就继续执行,没有代码就结束程序。
2、对照代码分析 for 循环的执行过程
下面将根据如图的代码进行讲解代码的执行和内存的变化。在图中假设一个内存区,一个终端区,终端就是控制台。
如果代码从 for 开始启动,首先把代码要素提取出来,分别是 i:=1 变量的初始化,i<=10 是循环条件,fmt.Println 是循环执行语句,i++ 是循环变量的迭代。然后执行语句 i:=1,则会有一个变量i在内存中赋值为 1,第一句话就执行完了。然后执行判断 i<=10,如果 i<=10 为真就执行下面的语句 Println,这时 i=1,则会在终端输出“你好,尚硅谷 1”,第二步执行完后执行 i++,而内存中 i 的赋值则为 i[2],紧接着再进行判断,这时判断i仍然小于等于 10,然后再执行 Println 语句,这时再控制台会输出第二句“你好,尚硅谷 2”,执行完后又执行 i++,于是 i=3,以此类推不停的走,直到输出“你好,尚硅谷 9”,输出后紧接着就会进行 i++,进行判断i仍然小于等于 10,则再进行输出“你好,尚硅谷 10”,输出后再进行 i++,然后内存中 i=11,再继续进行判断时,i=11 大于 10,于是进行退出,所以此时就跳出了 for 循环,这里要注意结束 for 循环后 i 是等于 11 的,所以得出结论:当 for 循环结束后i的值是一定是大于 10 的,不大于 10 的话会一直循环。这一点非常重要,要理解,下面输出 i 的值进行验证:
如果代码如下:
for i:= 1; i < = 10; i++{
fmt.Println(“你好,尚硅谷”,i)
}
fmt.Println(“i=”,i)
}
则会出现报错,因为变量 i 是在 for 循环进行定义的,因此 i 的作用域只能在 for 循环中有效,出了这个 for 循环i就是无效的,所以此时会报错 undefined:i,因此如果要进行测试输出的话,就要把 i 定义到 for 循环外,此时再进行输出,运行程序。
代码为:
i:= 1
for; i < = 10; i++{
fmt.Println(“你好,尚硅谷”,i)
}
fmt.Println(“i=”,i)
}
运行结果:D:\goproject\src\go_code\chapter05\fordemo>go run main .go