Go语言for循环

1、简介

在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句,for 循环是一个循环控制结构,可以执行指定次数的循环。

与多数语言不同的是,Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构,关键字 for 的基本使用方法与C语言和 C++ 中非常接近。

流程图:

image-20230201205157675

2、for循环

语法:

for 循环变量初始化; 循环条件; 循环变量迭代 {

循环操作语句

}

语法说明:

对for循环来说,有四个要素:

1)循环变量初始化

2)循环条件

3)循环操作语句),有人也叫循环体。

4)循环变量迭代

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package main

import "fmt"

func main() {
//for循环快速入门
for i := 1; i <= 10; i++ {
fmt.Println("你好,welcome to study", i)
}
}

//执行顺序说明:
//1、执行环境变量的初始化,比如i:=1
//2、执行循环条件,比如i<=10
//3、如果循环条件为真,就执行循环操作:比如fmt.Println("")
//4、执行循环变量迭代,比如i++
//5、反复执行2,3,4步骤,直到循环条件为false,就退出for循环



//输出的结果
你好,welcome to study 1
你好,welcome to study 2
你好,welcome to study 3
你好,welcome to study 4
你好,welcome to study 5
你好,welcome to study 6
你好,welcome to study 7
你好,welcome to study 8
你好,welcome to study 9
你好,welcome to study 10

3、for常见的语法格式

1、for 循环变量初始化; 循环条件; 循环变量迭代 {

循环操作(语句)

}

2、for 循环判断条件 {

循环执行语句

循环变量迭代

}

1
2
3
4
5
6
7
8
9
10
11
package main
import (
"fmt"
)
func main() {
j := 1
for j <= 10 {
fmt.Println("你好,Welcome to study", j)
j++
}
}

3、

for {

循环执行语句

}

上面的写法等价 for ; ; {} 是一个无限循环, 通常需要配合 break 语句使用

k := 1

for { // 这里也等价 for ; ; {

​ if k <= 10 {

​ fmt.Println(“ok~~”, k)

​ } else {

​ break //break就是跳出这个for循环

​ }

​ k++

}

4、for range

Golang 提供 for-range 的方式,可以方便遍历字符串和数组

遍历字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
方式1-使用传统方式:
// var str string = "hello,world,Welcome to 北京"
// for i := 0; i < len(str); i++ {
// fmt.Printf("%c \n", str[i]) //使用到下标...
// }
//上面方式打印汉字会乱码,需要转成切片
var str string = "hello,world,Welcome to 北京"
str2 := []rune(str) // 就是把 str 转成 []rune
for i := 0; i < len(str2); i++ {
fmt.Printf("%c \n", str2[i]) //使用到下标... %c是输出字符的意思


方式2-使用for range
str = "hello,welcome to上海"
for index, val := range str {
fmt.Printf("index=%d, val=%c \n", index, val)

5、for循环练习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
func main() {
//打印1-100之间所有事9的倍数的整数的个数及总和
//1、使用for循环对max进行遍历
//2、当一个数%9==0就是9的倍数
//3、我们需要声明两个变量count和sum来保存个数和总和
var max uint64 = 100
var count uint64 = 0
var sum uint64 = 0
var i uint64 = 1
for ; i <= max; i++ {
if i%9 == 0 {
count++
sum += i
}
}
fmt.Printf("count=%v sum=%v\n", count, sum)
}
//最终的输出结果
//count=11 sum=594
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
	var n int = 6
for i := 0; i <= n; i++ {
fmt.Printf("%v+%v=%v\n", i, n-i, n)
}
}

//最终的输出结果
/*0+6=6
1+5=6
2+4=6
3+3=6
4+2=6
5+1=6
6+0=6
*/