for循环
2022-02-06 大约 2 分钟
for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构。for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的"步进",即执行迭代因子。
# 语法
for (初始表达式; 布尔表达式; 迭代因子) {
循环体
}
1
2
3
2
3
- 初始化部分设置循环变量的初值。
- 条件判断部分为任意布尔表达式。
- 迭代因子控制循环变量的增减。
package main
import "fmt"
func main() {
var sum int = 0
for i := 0; i <= 5; i++ {
sum += i
}
fmt.Println(sum) // 15
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
相关信息
for 的初始化表达式 不能用var定义变量的形式,要用 :=
# 细节
for 后面可以直接跟判断条件
package main import "fmt" func main() { i := 0 for i <= 5 { i++ } fmt.Println(i) // 6 }
1
2
3
4
5
6
7
8
9
10
11死循环
func main() { for { fmt.Println("死循环了") } } // 或 func main() { for ;; { fmt.Println("死循环了") } }
1
2
3
4
5
6
7
8
9
10
11遍历字符串
package main import "fmt" func main() { var str string = "hello golang你好" for i := 0; i < len(str); i++ { fmt.Printf("%c \n", str[i]) } } // 打印结果 h e l l o g o l a n g ä ½ å ¥ ½
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你好这两个汉字,会出现乱码,所以建议使用for range循环。
# 标签
for循环可以使用标签来中断循环体
func main() {
lable2:
for i := 1; i < 5; i++ {
for j := 1; j < 4; j++ {
fmt.Println(i, j)
break lable2
}
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
可以通过加标签来中断外层for循环。
# for range
for range结构是go语言特有的一种迭代结构,在许多情况下都非常有用,for range 可以遍历数组、切片、字符串、map及通道、for range语法上类似于其它语言中的foreach语句。
语法:
for key, val := range coll {
// 循环体
}
1
2
3
2
3
package main
import "fmt"
func main() {
var str string = "hello golang你好"
for i, value := range str {
fmt.Printf("索引为:%d,具体的值为: %c \n", i, value)
}
}
// 打印结果
索引为:0,具体的值为: h
索引为:1,具体的值为: e
索引为:2,具体的值为: l
索引为:3,具体的值为: l
索引为:4,具体的值为: o
索引为:5,具体的值为:
索引为:6,具体的值为: g
索引为:7,具体的值为: o
索引为:8,具体的值为: l
索引为:9,具体的值为: a
索引为:10,具体的值为: n
索引为:11,具体的值为: g
索引为:12,具体的值为: 你
索引为:15,具体的值为: 好
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
因为一个汉字占3个字节,所以索引12后面是15。