目录
  • 一、循环语句
    • 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的数字之和。

          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时自相加的值:

          package main
          
          import "fmt"
          
          func main() {
          	count := 1
          	for ; count < 10; {
          		count += count
          	}
          	fmt.println("count小于10时自相加的值为:",count)
          }
          

          也可以省略;号:

          package main
          
          import "fmt"
          
          func main() {
          	count := 1
          	for count < 10{  //省略分号
          		count += count
          	}
          	fmt.println("1到10的数字之和为:",count)
          }
          

          执行结果

          count小于10时自相加的值为

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

          package main
          
          import "fmt"
          
          func main() {
          
          	for { //省略condition
          		fmt.println("死循环")
          	}
          }
          

          2. 循环嵌套

          package main
          
          import "fmt"
          
          func main() {
          
          	for { //省略condition
          		fmt.println("死循环")
          	}
          }
          

          输出结果

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

          3. range循环

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

          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的时候则跳出循环:

          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:

          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

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

          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 是跳过当次循环执行后面的循环,而非中断循环

          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所在行的代码:

          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的循环语句和循环控制语句的文章就介绍到这了,更多相关go循环语句和循环控制语句内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!