Go笔记(三):循环语句

1、for循环

  与Java语言不同,go语言中只有for循环,没有while和do while。for表达式无需加括号,语法如下:

for 初始语句;条件表达式;结束语句 {
    循环体语句
}

  示例代码如下:

 1 package main
 2 
 3 import "fmt"
 4 
 5 /**
 6    循环
 7  */
 8 func for01() {
 9    for i := 1; i < 10; i++ {
10       fmt.Printf("for01 ==> i: %v\n", i)
11    }
12 }
13 // 初始条件可省略
14 func for02() {
15    i := 1
16    for ; i < 10; i++ {
17       fmt.Printf("for02 ==> i: %v\n", i)
18    }
19 }
20 // 初始结束条件都可省略
21 func for03() {
22    i := 1
23    for i < 10 {
24       fmt.Printf("for03 ==> i: %v\n", i)
25       i++
26    }
27 }
28 // 永真循环
29 func for04() {
30    for {
31       fmt.Println("for04 ==> 一直在循环")
32    }
33 }
34 
35 func main() {
36    for01()
37    for02()
38    for03()
39    //for04()
40 }

2、for range循环

  Go中可以使用for range遍历数组、切片、字符串、map及channel(通道)。遍历数组会返回索引和值。

 1 package main
 2 
 3 import "fmt"
 4 
 5 // 遍历数组,带有索引值的for range
 6 func forrange01() {
 7    var arr = [...]int{1, 3, 5, 7, 9}
 8    // i 为索引下标;v 为元素值
 9    for i, v := range arr {
10       fmt.Printf("i = %v ; v = %v\n", i, v)
11    }
12 }
13 // 遍历数组,不用索引值,用匿名变量表示索引值的for range
14 func forrange02() {
15    var arr = [...]int{1, 3, 5, 7, 9}
16    for _, v := range arr {
17       fmt.Printf("v: %v\n", v)
18    }
19 }
20 
21 func main() {
22    forrange01()
23    forrange02()
24 }

3、break关键字

  break可以结束for循环的代码块,示例代码如下:

 1 package main
 2 
 3 import "fmt"
 4 
 5 // break关键字
 6 func break01() {
 7    for i := 1; i < 10; i++ {
 8       if i == 5 {
 9          break
10       }
11       fmt.Printf("break01 ==> i: %v\n", i)
12    }
13    fmt.Println("break01 ==> over for")
14 }
15 // 跳出循环到指定位置
16 func break02() {
17    LABEL:
18    for i := 1; i < 10; i++ {
19       if i == 3 {
20          break LABEL
21       }
22       fmt.Printf("break02 ==> i: %v\n", i)
23    }
24    fmt.Println("break02 ==> over for")
25 }
26 
27 func main() {
28    break01()
29    break02()
30 }

4、continue关键字

  continue只能用在循环中,可以终止本次循环,进行下一次循环;continue语句后添加标签时,表示开始标签对应的循环。示例代码如下:

 1 package main
 2 
 3 import "fmt"
 4 
 5 // 输出偶数 continue -> 结束本次循环,继续下一次循环
 6 func continue01() {
 7    for i := 1; i < 10; i++ {
 8       if i%2 != 0 {
 9          continue
10       }
11       fmt.Printf("continue01 ==> i: %v是偶数\n", i)
12    }
13 }
14 // continue到指定标签
15 func continue02() {
16    for i := 1; i < 3; i++ {
17       LABEL:
18       for j := 1; j < 3; j++ {
19          if i == 2 && j == 3 {
20             continue LABEL
21          }
22          fmt.Printf("continue02 ==> i: %v, j: %v\n", i, j)
23       }
24    }
25 }
26 
27 func main() {
28    continue01()
29    continue02()
30 }

 

posted @ 2023-04-12 08:44  无虑的小猪  阅读(29)  评论(0编辑  收藏  举报