一、基本介绍
听其名而知其意,循环控制-for可以让你的代码循环的执行。
二、基本语法
for 循环变量初始化; 循环条件; 循环变量迭代 {
循环操作(语句)
}
语法分析:
for循环四要素:
1、循环变量初始化
2、循环的条件,只有为真(true) 才会执行,否则退出for
3、循环操作(语句), 完成的任务
4、循环变量迭代, 会向退出循环变化
for循环执行步骤
1、先执行循环变量初始化
2、执行循环条件, 判断是否为真,如果为真,则继续,否则退出
3、执行循环操作
4、执行循环叠代
5、然后反复的执行 2, 3, 4 , 直到循环条件 为假,就退出
三、for循环执行流程图
四、快速入门案例
实现:打印1~100之间所有是9的倍数的整数的个数及总和
// 1) 打印1~100之间所有是9的倍数的整数的个数及总和
/*
分析:
1、for循环遍历1~100
2、是9的倍数的整数 if i%9 ==0
2、变量 sum 加2中i count 计数
*/
func ForDemo5() {
var count = 0
var sum = 0
for i := 1; i < 101; i++ {
if i % 9 == 0 {
count++
sum += i
}
}
fmt.Printf("1~100之间所有是9的倍数的整数的个数为:%d及总和:%d \n",count,sum)
}
五、使用细节和注意事项
1、循环条件是返回一个布尔值的表达式
2、for循环的第二种使用方式——实现while
for 循环判断条件 {
//循环执行语句
}
将变量初始化和变量迭代写到其它位置
代码:
// for使用方式二 使用for循环实现while的效果
func ForDemo2() {
i := 0
for i < 10 {
fmt.Println("for使用方式二",i)
}
i++
fmt.Println("---------------------------------------")
}
3、 for循环的第三种使用方式——实现do while
for {
//循环执行语句
}
上面的写法等价 for ; ; {} 是一个无限循环, 通常需要配合break语句使用。
代码
// for使用方式三 使用for循环do..while的效果实现
func ForDemo3() {
i := 0
for {
i++
if i >10 {
break
}
fmt.Println("for使用方式三",i)
}
fmt.Println("---------------------------------------")
}
上面代码,也有人这样写
for ture {
}
for ; ; {
}
4、Golang 提供 for-range的方式,可以方便遍历字符串和数组。
5、使用for 来遍历字符串有两种方法
方式1-常规方法
str := "qjmkfa中国c东方oomccsm,cfd"
// 按字节进行遍历,如果出现中文,会乱码,解决方法切片
for i1 := 0; i1<len(str); i1++ {
fmt.Printf("第%d个下标的值是%c \n",i1,str[i1])
}
//切片解决普通遍历中文乱码
str2 := []rune(str)
for i2 := 0; i2<len(str2); i2++ {
fmt.Printf("第%d个下标的值是%c \n",i2,str2[i2])
}
fmt.Println("---------------------------------------")
方式2-for–range
str := "qjmkfa中国c东方oomccsm,cfd"
//for range 按字符进行遍历,如果出现中文,不会乱码
for i , j := range str {
fmt.Printf("第%d个下标的值是%c \n",i,j)
}
fmt.Println("---------------------------------------")
六、while和do…while的实现
1、基本说明
Go语言没有while和do…while语法,这一点需要同学们注意一下,如果我们需要使用类似其它语言(比如 java / c 的 while 和 do…while ),可以通过for循环来实现其使用效果。
2、使用for循环实现while的效果
循环变量初始化
for {
if 循环条件表达式 { // 先判断在执行
break //跳出for循环..
}
循环操作(语句)
循环变量迭代
}
说明:
1) 使用for实现while 的效果, 变量的初始化写在for外部
2) for 本身是一个无限循环,先判断在执行, 如果判断为真,则break
3) 判断完毕后,继续执行语句和叠代。
代码:
// for使用方式二 使用for循环实现while的效果
func ForDemo2() {
i := 0
for i < 10 {
fmt.Println("for使用方式二",i)
}
i++
fmt.Println("---------------------------------------")
}
3、使用for循环实现do..while的效果
循环变量初始化
for {
循环操作(语句)
循环变量迭代
if 循环条件表达式 {
break //跳出for循环..
}
}
代码:
// for使用方式三 使用for循环do..while的效果实现
func ForDemo3() {
i := 0
for {
i++
if i >10 {
break
}
fmt.Println("for使用方式三",i)
}
fmt.Println("---------------------------------------")
}
七、多重循环
1、基本介绍
将一个循环放在另一个循环体内,就形成了嵌套循环。在外边的for称为外层循环在里面的for循环称为内层循环。【建议一般使用两层,最多不要超过3层】
实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。
2、快速入门案例
打印金字塔经典案例
//请编写一个程序,可以接收一个整数,表示层数,打印出金字塔
//
/*
*
***
*****
*/
//分析
//1. 先打印出
/*
****
****
****
*/
//2 打印
/*
* //第1行打印 1 * 即: 2 * i - 1
*** //第2行打印 3 *
***** //第3行打印 5 *
*/
//3 打印
/*
* //第1行打印 空格 2 = 总的行数 - i = 3 - 1
*** //第2行打印 空格 1 = 3 - 2
***** //第3行打印 空格 0 = 3 - 3
*/
//4 打印 空心的 , 什么情况下打印 * ,什么情况下打印空格
/*
*
* *
*****
*/
//将 3 改成一个变量
var totalLayer = 20
//代码实现
for i := 1; i <= totalLayer; i ++ { //i表示 第几行
//先打印出空格
for k := 1; k <= totalLayer - i; k++ {
fmt.Print(" ")
}
for j := 1; j <= 2 * i - 1; j++ { //j 表示列
//什么情况下打印 * ,什么情况下打印空格
//在当前这个情况下的第一个和最后一个打印*,其它打印空格
if j == 1 || j == 2 * i - 1 || i == totalLayer {
fmt.Print("*")
} else {
fmt.Print(" ")
}
}
fmt.Println()
}