开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情
for 循环语句分析
1. 结构:
for (初始化语句;条件判断语句;条件控制语句) {
循环体语句
}
结构分解:
解析: 在此结构中,初始化语句用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样。条件判断语句用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去。循环体语句用于表示循环反复执行的内容,简单说就是循环反复执行的事情。条件控制语句用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去。
2. 举例: 有一个初始值为0的变量i,已知它每次打印输出后就自增1,且它的最大值不能为5,请用for循环语句打印它的输出值。
for i := 0; i < 5; i++ { //for循环语句
fmt.Println(i) //语句&表达式输出
}
终端输出:
结构解析:
for i := 0; i < 5; i++ { //for循环语句
}
for循环语句:在Go中, for循环根据循环计数器或循环变量实现代码的重复执行。函数编译进入for循环语句中时,先执行初始化语句以后开始执行条件判断语句进行判断说明,确定其结果为true还是false,且如果为false时,则循环会结束,但如果是true则继续向下执行从而执行循环体语句,循环体语句结束以后执行条件控制语句再重复判断条件的执行,从而实现条件的循环判断输出。
fmt.Println(i) //语句&表达式输出(函数体语句)
函数体语句: 在函数中具有实现指定功能的代码块即为函数的函数体,在此函数体中实现的功能就是打印输出返回的结果,Println 函数是属于包 fmt 的函数。
for无限循环语句分析
1. 结构:
for {
条件控制语句
If{
循环体语句;
break
}
}
结构分解:
解析: 在无限循环中,for 中的条件判断——控制是否循环的开关每次循环开始前都会计算条件表达式,如果表达式为 true,则循环继续,否则结束循环,条件表达式可以被忽略,忽略条件表达式后默认形成无限循环。
2. 举例: 比较两个数的大小,判断循环是否依旧执行。
var a2 = 10 //变量的初始化
var i = 1
for { //for无限循环
i++
if i > a2 {
fmt.Println("循环结束,跳出循环") //语句&表达式输出
break
}
}
终端输出:
结构解析:
var a2 = 10 //变量的初始化
var i = 1
变量的声明赋值: Go语言是静态类型语言,因此变量(variable)是有明确类型的。编译器会检查函数调用中,变量类型的正确性。在数学概念中,变量表示没有固定值且可改变的数。但从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存。
for { //for无限循环
i++
if i > a2 {
fmt.Println("循环结束,跳出循环") //语句&表达式输出
break
}
}
for无限循环: 无限循环在收发处理中较为常见,但需要无限循环有可控的退出方式来结束循环。当在结束每次循环前执行的语句,如果循环被 break、goto、return、panic 等语句强制退出,则结束语句不会被执行。该语句中无须设置 i 的初始值,因此忽略 for 的初始语句,两个分号之间是条件表达式,也被忽略,此时循环会一直持续下去,for 的结束语句为 i++,每次结束循环前都会调用。判断 i 大于a2 时,通过 break 语句跳出 for 循环则循环结束。
for循环嵌套语句分析
1. 结构:
for (循环变量初始化;终止条件表达式;循环变量的增量){
语句或语句块;
for(循环变量初始化;终止条件表达式;循环变量的增量){
语句或语句块;
}
}
结构分解:
解析:在 for 循环中可以嵌套一个也可以嵌套多个 for 循环。一个循环结构内可以含有另一个循环,称为循环嵌套,又称多重循环。常用的循环嵌套是二重循环,外层循环称为 外循环,内层循环称为内循环。
2. 举例:使用for嵌套循环来输出九九乘法表。
package main //包的声明
import "fmt" //引入包
func main() { //函数
for i := 1; i < 10; i++ { //for循环嵌套
for j := 1; j <= i; j++ {
fmt.Printf("%d * %d = %2d\t", i, j, i*j)
}
fmt.Println()
}
}
终端输出:
结构解析:
package main //包的声明
包声明:package main 定义了包名。它在源文件中指明了这个文件属于那个包。
import "fmt" //引入包
引入包: import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包,fmt 包实现了格式化 IO(输入/输出)的函数。
func main() { //函数
函数:func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。函数执行开始后,函数内语句依照main()函数内依次执行。
for i := 1; i < 10; i++ { //for循环嵌套
for j := 1; j <= i; j++ {
fmt.Printf("%d * %d = %2d\t", i, j, i*j)
}
fmt.Println()
}
for循环嵌套: 一个循环结构内可以含有另一个循环,称为循环嵌套,又称多重循环。常用的循环嵌套是二重循环,外层循环称为 外循环,内层循环称为内循环。在执行过程中,先在外层判断循环条件,满足进入外层循环体后,进入内层判断循环条件,判断成功以后开始内层循环体执行,然后内层循环变量增加,回到内层循环条件执行判断,直到不满足内层条件跳出,再开始外层循环累加执行,当外层条件也不满足后,则会完全退出循环。结束嵌套过程。
for range循环语句分析
1. 结构:
for key, val := range coll {
}
释义:val 始终为集合中对应索引的值拷贝,因此它一般只具有只读性质,对它所做的任何修改都不会影响到集合中原有的值。Key值为下标的索引。Coll为循环输出的元素数组。
结构分解:
解析: for range 结构是Go语言特有的一种的迭代结构,在许多情况下都非常有用,for range 可以遍历数组、切片、字符串、map 及通道(channel)。每个 rune 字符和索引在 for range 循环中是一一对应的,它能够自动根据 UTF-8 规则识别 Unicode 编码的字符。Go语言和其他语言类似,可以通过 for range 的组合,对字符串进行遍历,遍历时,k 和 v分别代表字符串的索引和字符串中的每一个字符。
2. 举例: 请通过for range循环打印“知链区块链人才培养摇篮”。
var string1 string = "知链区块链人才培养摇篮" //变量的声明赋值
for k, v := range string1 { //for range循环
fmt.Println(k, string(v))
}
终端输出:
结构解析:
var string1 string = "知链区块链人才培养摇篮" //变量的声明赋值
变量声明赋值:在Go语言中给变量的声明赋值可以分为三个阶段,先创建变量,在内存中开辟空间后再初始化变量,将变量初始化为underfined,最后再进行真正赋值。
for k, v := range string1 { //for range循环语句
fmt.Println(k, string(v))
}
for range* *循环语句:**for range 结构是Go语言特有的一种的迭代结构,在许多情况下都非常有用,for range 可以遍历数组、切片、字符串、map 及通道(channel)。在for range 循环打印的过程中如果打印的中文的字符串则中文字符的key值按照+3顺序递增,如果打印的是英文字符串则英文字符的key值按照+1顺序递增。在此语句中通过对初始化的字符串进行打印且key值依照+3的顺序进行递增。
fmt.Println(k, string(v)) //语句&表达式输出
语句&表达式输出:fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。函数内语句依照main函数内依次执行。
Goto跳转语句分析
1. 结构:
goto label;
..
label: statement;
运行流程:
结构分解:
解析: Go 语言的 goto 语句可以无条件地转移到程序中指定的行。且通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。在此语句中FLAG为标签,该标签后的语句一般代表语句跳转后下一步代码在哪里执行,它与条件语句结合使用后,在该程序中不满足条件时就会进行自增长输出,当满足时则通过goto跳转从标签处再开始。
2. 举例: 有一个初始值为10的变量x,当他小于20时进入循环中,在变量x自增的情况下,若为偶数时则可自动输出,若为奇数时则跳转进入循环。请使用Goto跳转语句实现此程序。
var x int = 10 //变量的初始化赋值
flag: //Goto语句跳转
for x < 20 {
if x%2 == 1 {
x = x + 1
goto flag
}
fmt.Printf("x的值为 : %d\n", x)
x++
}
终端输出:
结构解析:
var x int = 10 //变量的初始化赋值
变量的初始化赋值: Go语言是静态类型语言,因此变量(variable)是有明确类型的。编译器会检查函数调用中,变量类型的正确性。在数学概念中,变量表示没有固定值且可改变的数。但从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存。在此语句中通过元组变量声明并指定出变量数据存储的空间,然后通过赋值运算符将数值赋值给变量。
flag: //Goto语句跳转
for x < 20 {
if x%2 == 1 {
x = x + 1
goto flag
}
fmt.Printf("x的值为 : %d\n", x)
x++
}
Goto语句跳转: Go 语言的 goto 语句可以无条件地转移到程序中指定的行。且通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。在此语句中LOOP为标签,该标签后的语句一般代表语句跳转后下一步代码在哪里执行,它与条件语句结合使用后,在该程序中不满足条件时就会进行自增长输出,当满足时则通过goto跳转从标签处再开始。 但是在结构化程序设计中一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试程序都产生困难。