Golang学习之路(四):Golang的循环语句和循环控制语句

x33g5p2x  于2021-11-19 转载在 Go  
字(2.5k)|赞(0)|评价(0)|浏览(578)

一、循环语句

1. 普通循环

1)语法

  1. for init; condition; post { }
  1. init(可选):给控制变量赋初值;
  2. condition(可选):控制条件(不填的时候等于while True);
  3. post(可选):控制变量增量或减量;

2)举例

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

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

执行结果

  1. 110的数字之和为: 55

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

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

也可以省略;号:

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

执行结果

  1. count小于10时自相加的值为

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

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

2. 循环嵌套

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

输出结果

  1. (110的数字之和)x10: 550

3. range循环

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

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

输出结果

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

二、循环控制语句

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

1)中断(跳出)循环

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

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

输出结果

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

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

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

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

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

输出结果

  1. 外层循环i: 1
  2. 内层循环j: 11
  3. 外层循环i: 2
  4. 内层循环j: 11

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

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

输出结果

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

2.Continue-跳过当次循环

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

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

执行结果

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

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

3.goto-条件转移

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

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

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

执行结果

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

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

👇🏻欢迎关注公众号【曲鸟讲测试开发】,获取最新教程,面试经验、Python知识分享👇🏻

相关文章