语法
for init;condition;post{
}
for condition {
}
for {}
- Go语言的 for 包含初始化语句、条件表达式、结束语句,这 3 个部分均可缺省。
- for range 支持对数组、切片、字符串、map、通道进行遍历操作。
- 在需要时,可以使用匿名变量对 for range 的变量进行选取。
示例
- 死循环,相当于其他语言的while语句
func main() {
i := 0
for {
if i == 100 {
break
}
fmt.Println("aa",i)
i++
}
}
- 条件循环,相当于其他语言的dowhile语句
func main() {
i := 0
for i < 100{
fmt.Println("aa",i)
i++
}
}
- 三元循环,和其他语言for循环一样
func main() {
for i := 0; i < 100;i++{
fmt.Println("aa",i)
i++
}
}
- range循环数组,和其他语言foreach循环一样
func main() {
strings := []string{"google", "runoob"}
for i, s := range strings {
fmt.Println(i, s)
}
numbers := [6]int{1, 2, 3, 5}
for i, x := range numbers {
fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)
}
}
- range循环map
func main() {
map1 := make(map[int]float32)
map1[1] = 1.0
map1[2] = 2.0
map1[3] = 3.0
map1[4] = 4.0
// 读取 key 和 value
for key, value := range map1 {
fmt.Printf("key is: %d - value is: %f\n", key, value)
}
// 读取 key
for key := range map1 {
fmt.Printf("key is: %d\n", key)
}
// 读取 value
for _, value := range map1 {
fmt.Printf("value is: %f\n", value)
}
}
- 嵌套循环和break
func main() {
for i := 0; i < 100; i++ {
fmt.Println("i=",i)
for j := 0; j < 10; j++ {
fmt.Println("j=",j)
if j == 5 {
break //这里只会跳出里面这个for,外层for还会继续执行
}
}
}
outfor:
for i := 0; i < 100; i++ {
fmt.Println("i=",i)
for j := 0; j < 10; j++ {
fmt.Println("j=",j)
if j == 5 {
break outfor //在里面跳出外层的for
}
}
}
}
- continue, 同6.
func main() {
for i := 0; i < 100; i++ {
fmt.Println("i=",i)
for j := 0; j < 10; j++ {
fmt.Println("j=",j)
if j == 5 {
continue
}
}
}
outfor:
for i := 0; i < 100; i++ {
fmt.Println("i=",i)
for j := 0; j < 10; j++ {
fmt.Println("j=",j)
if j == 5 {
continue outfor //在里面继续外层的for
}
}
}
}
8.goto, 这个语法一般不推荐用,所以不讲解,知道有这个东西就行了