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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
package main
import "fmt"
func main() {
// 1. 传统的for循环
fmt.Println("1. 传统for循环:")
for i := 0; i < 5; i++ {
fmt.Printf("i = %d\n", i)
}
// 2. 省略初始化的for循环
fmt.Println("\n2. 省略初始化:")
j := 0
for ; j < 3; j++ {
fmt.Printf("j = %d\n", j)
}
// 3. 省略后置语句的for循环
fmt.Println("\n3. 省略后置语句:")
k := 0
for k < 3 {
fmt.Printf("k = %d\n", k)
k++
}
// 4. 无限循环
fmt.Println("\n4. 无限循环(带break):")
count := 0
for {
if count >= 3 {
break
}
fmt.Printf("count = %d\n", count)
count++
}
// 5. range循环 - 遍历数组/切片
fmt.Println("\n5. range遍历切片:")
numbers := []int{10, 20, 30, 40, 50}
// 同时获取索引和值
for index, value := range numbers {
fmt.Printf("numbers[%d] = %d\n", index, value)
}
// 只获取索引
fmt.Println("\n只获取索引:")
for index := range numbers {
fmt.Printf("索引: %d\n", index)
}
// 只获取值
fmt.Println("\n只获取值:")
for _, value := range numbers {
fmt.Printf("值: %d\n", value)
}
// 6. range循环 - 遍历字符串
fmt.Println("\n6. range遍历字符串:")
str := "Hello, 世界"
// 按字节遍历
fmt.Println("按字节遍历:")
for i := 0; i < len(str); i++ {
fmt.Printf("str[%d] = %c (%d)\n", i, str[i], str[i])
}
// 按Unicode字符遍历
fmt.Println("\n按Unicode字符遍历:")
for index, char := range str {
fmt.Printf("字符 '%c' 在索引 %d\n", char, index)
}
// 7. range循环 - 遍历映射
fmt.Println("\n7. range遍历映射:")
m := map[string]int{
"apple": 5,
"banana": 3,
"orange": 8,
}
for key, value := range m {
fmt.Printf("%s: %d\n", key, value)
}
// 只遍历键
fmt.Println("\n只遍历键:")
for key := range m {
fmt.Printf("键: %s\n", key)
}
// 8. range循环 - 遍历通道
fmt.Println("\n8. range遍历通道:")
ch := make(chan int, 3)
ch <- 1
ch <- 2
ch <- 3
close(ch) // 关闭通道
for value := range ch {
fmt.Printf("从通道接收: %d\n", value)
}
// 9. 嵌套循环
fmt.Println("\n9. 嵌套循环:")
for i := 1; i <= 3; i++ {
for j := 1; j <= 3; j++ {
fmt.Printf("(%d,%d) ", i, j)
}
fmt.Println()
}
// 10. 带标签的循环控制
fmt.Println("\n10. 带标签的循环:")
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 1 {
fmt.Println("跳出外层循环")
break outer
}
fmt.Printf("i=%d, j=%d\n", i, j)
}
}
}
|