阅读 70

Golang的循环语句和循环控制语句详解

循环语句为了简化程序中有规律的重复性操作,需要用到循环语句,和其他大多数编程语言一样,GO的循环语句有for循环,不同的是没有while循环,而循环控制语句可以改变循环语句的执行过程,下面给大家介绍下go循环语句和循环控制语句的相关知识,一起看看吧

目录
  • 一、循环语句

    • 1. 普通循环

      • 1)语法

      • 2)举例

    • 2. 循环嵌套

      • 3. range循环

      • 二、循环控制语句

        • 1.Break-中断(跳出)循环

          • 1)中断(跳出)循环

          • 2)指定想中断(跳出)的循环(嵌套循环中使用)

        • 2.Continue-跳过当次循环

          • 3.goto-条件转移

          一、循环语句

          1. 普通循环

          1)语法

          for init; condition; post { }

          • init(可选):给控制变量赋初值;

          • condition(可选):控制条件(不填的时候等于while True);

          • post(可选):控制变量增量或减量;

          2)举例

          1.求1到10的数字之和。

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          package main
           
          import "fmt"
           
          func main() {
              count := 0
              for i := 0; i <= 10; i++ {
                  count += i
              }
              fmt.Println("1到10的数字之和为:",count)
          }

          执行结果

          1到10的数字之和为: 55

          2.省略init和post:计算count小于10时自相加的值:

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          package main
           
          import "fmt"
           
          func main() {
              count := 1
              for ; count < 10; {
                  count += count
              }
              fmt.Println("count小于10时自相加的值为:",count)
          }

          也可以省略;号:

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          package main
           
          import "fmt"
           
          func main() {
              count := 1
              for count < 10{  //省略分号
                  count += count
              }
              fmt.Println("1到10的数字之和为:",count)
          }

          执行结果

          count小于10时自相加的值为

          3.Golang中没有while循环,可以通过省略condition来实现:

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          package main
           
          import "fmt"
           
          func main() {
           
              for { //省略condition
                  fmt.Println("死循环")
              }
          }

          2. 循环嵌套

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          package main
           
          import "fmt"
           
          func main() {
           
              for { //省略condition
                  fmt.Println("死循环")
              }
          }

          输出结果

          (1到10的数字之和)x10: 550

          3. range循环

          用于对字符串、数组、切片等进行迭代输出元素:

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          package main
           
          import "fmt"
           
          func main() {
              strArray := []string{"a", "b","c"} //字符串数组
              for i,v := range strArray {
                  fmt.Println(fmt.Sprintf("下标为:%d 值为:%s", i,v))
              }
          }

          输出结果

          下标为:0 值为:a
          下标为:1 值为:b
          下标为:2 值为:c

          二、循环控制语句

          1.Break-中断(跳出)循环

          1)中断(跳出)循环

          写一个死循环,变量a会一直加1,当a的值大于3的时候则跳出循环:

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          package main
           
          import "fmt"
           
          func main() {
              a := 1
              for  {
                  a++
                  fmt.Printf("a 的值为 : %d\n", a)
                  if a > 3 {
                      /* 使用 break 语句跳出循环 */
                      fmt.Printf("跳出循环")
                      break
                  }
              }
          }

          输出结果

          a 的值为 : 2
          a 的值为 : 3
          a 的值为 : 4
          跳出循环

          2)指定想中断(跳出)的循环(嵌套循环中使用)

          使用标号,可以指定想跳出的循环。

          下面是未使用标记,普通break中断循环,只会中断当前层循环,不会中断外层,外层打印的值始终为11:

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          package main
           
          import "fmt"
           
          func main() {
              for i := 1; i <= 2; i++ {
                  fmt.Printf("外层循环i: %d\n", i)
                  for j := 11; j <= 12; j++ {
                      fmt.Printf("内层循环j: %d\n", j)
                      break  //不使用标记,则只会中断该层循环,不会中断外层循环
                  }
              }
          }

          输出结果

          外层循环i: 1
          内层循环j: 11
          外层循环i: 2
          内层循环j: 11

          下面是使用标记,指定中断外层循环,等于只循环执行了一次:

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          package main
           
          import "fmt"
           
          func main() {
          re:
              for i := 1; i <= 2; i++ {
                  fmt.Printf("外层循环i: %d\n", i)
                  for j := 11; j <= 12; j++ {
                      fmt.Printf("内层循环j: %d\n", j)
                      break re //使用标记,中断外层循环
                  }
              }
          }

          输出结果

          外层循环i: 1
          内层循环j: 11

          2.Continue-跳过当次循环

          continue 是跳过当次循环执行后面的循环,而非中断循环

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          package main
           
          import "fmt"
           
          func main() {
              for a := 1; a < 5; a++ {
                  if a == 3 { //a=3时执行continue跳过
                      continue
                  }
                  //a=3时不会执行打印操作
                  fmt.Printf("a 的值为 : %d\n", a)
              }
          }

          执行结果

          a 的值为 : 1
          a 的值为 : 2
          a 的值为 : 4

          在循环嵌套时,continue也可以指定跳过的循环,用法与break一样

          3.goto-条件转移

          goto 可以直接转移到指定代码处进行执行。

          下面的代码,当a=3时,会跳出for循环,直接执行LOOP所在行的代码:

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          package main
           
          import "fmt"
           
          func main() {
              for a := 1; a < 5; a++ {
                  if a == 3 { //a等于3;执行goto跳出
                      goto LOOP
                  }
                  //a=3时不会执行打印操作
                  fmt.Printf("a 的值为 : %d\n", a)
              }
              LOOP:fmt.Printf("a等于3;执行goto跳出!")
          }

          执行结果

          a 的值为 : 1
          a 的值为 : 2
          a等于3;执行goto跳出!

          不建议使用goto,容易造成代码结构混乱

          到此这篇关于Golang的循环语句和循环控制语句的文章就介绍到这了

          原文链接:https://blog.csdn.net/momoda118/article/details/121201795


          文章分类
          版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
          相关推荐