02-for循环
@
目录
1. C语言风格
1.1 语法
for 赋值;控制条件;增减 { }
1.2 示例
- 代码
package main
import "fmt"
var j int = 0
func main() {
for i:=0;i<100;i++ {
j = j + i
}
fmt.Println(j)
}
- 输出
# go run sum.go
5050
2. 比较
2.1 语法
for控制条件{ }
2.2 示例
- 代码
package main
import "fmt"
var i, j = 0, 0
func main() {
for i <= 100 {
j = j + i
i++
}
fmt.Println(j)
}
- 输出
# go run sum.go
5050
3. 无限循环
for true { }
4. Range
4.1 数组和切片的范围
1)示例:用range求数组或切片的和
package main
import "fmt"
func main() {
nums := []int{2, 3, 4}
sum := 0
for _, num := range nums {
sum += num
}
}
说明:
给名为nums的range传如两个变量——index和值。
但是不需要使用该元素的index,因此用空白符“_”代替(如果写成变量,但是main中没有引用就报错了)
输出
sum: 9
2)打印数组的index
package main
import "fmt"
func main() {
nums := []int{2, 3, 4}
for i, num := range nums {
if num == 3 {
fmt.Println("index:", i)
}
}
}
结果
index: 1
4.2 map 上的应用
- 代码
package main
import "fmt"
func main() {
kvs := map[string]string{"a": "apple", "b": "banana"}
for k, v := range kvs {
fmt.Printf("%s -> %s\n", k, v)
}
}
- 输出结果
a -> apple
b -> banana
4.3 枚举Unicode字符串
- 代码
package main
import "fmt"
func main() {
for i, c := range "wei" {
fmt.Println(i, c)
}
}
- 输出
0 119
1 101
2 105
5. 循环控制
5.1 continue
1)作用:跳过本次循环之后的部分,继续循环
2)示例
脚本:
package main
import "fmt"
func main() {
for a := 1 ;a <= 10; a++ {
if a == 8 {
continue;
}
fmt.Printf("a 的值为 : %d\n", a);
}
}
说明:a==8 时,跳过了本次循环之后的打印值的部分。
执行
a 的值为 : 1
a 的值为 : 2
a 的值为 : 3
a 的值为 : 4
a 的值为 : 5
a 的值为 : 6
a 的值为 : 7
a 的值为 : 8
a 的值为 : 9
a 的值为 : 10
5.2 break
1)作用:跳出循环
2)示例 循环switch 开关
代码:
package main
import "fmt"
func main() {
var a int = 10
for a < 20 {
fmt.Printf("a 的值为 : %d\n", a);
a++;
if a > 15 {
break;
}
}
}
输出结果:
a 的值为 : 10
a 的值为 : 11
a 的值为 : 12
a 的值为 : 13
a 的值为 : 14
a 的值为 : 15
说明:到if条件的时候执行break 跳出了for循环。
5.3 goto
1)作用:
代码
package main
import "fmt"
func main() {
var i int = 1
fmt.Println("wait 1 ")
LOOP: fmt.Println("wait 2 ")
fmt.Println("wait 3 ")
for i < 10 {
i++
if i == 8 {
goto LOOP
}
fmt.Printf("i 的值为 : %d\n", i);
}
}
说明: 当i==8 时 跳过本次循环后边的打印。回到脚本前边LOOP的位置,继续打印wait 2 ,wait 3
执行结果