吾八哥博客

您现在的位置是:首页 > 码农手记 > Golang > 正文

Golang

吾八哥学Golang(五):Golang里的流程控制-循环语句

吾八哥2018-01-10Golang17163

在Golang里循环语句只支持for关键字,而不支持其他开发语言支持的while,do...while,repeat...until这些,Golang里的循环语句的写法和C++里非常相似,但比C++里应该更简洁,for后的语句不需要括号,如下实例:

package main

import "fmt"

func main()  {
   for i:=1; i<=10; i++ {
      fmt.Println(i)
   }
}

以上语句执行则会输出1-10。

Golang里的for循环语句for后支持多重赋值,如下实例:

package main

import "fmt"

func main()  {
   arr := []int{1, 2, 3, 4, 5, 6}
   for i, j := 0, len(arr) -1; i < j; i, j = i + 1, j - 1 {
      arr[i], arr[j] = arr[j], arr[i]
   }
   fmt.Println(arr)
}

以上语句即可将arr里的数据倒序输出。

Golang里的循环语句for后面可以不写表达式,即无限循环语句,根据某个条件开选择性中断或者不中断。看如下例子:

package main

import "fmt"

func main()  {
   i := 0
   for {
      i++
      fmt.Println(i)
      if i > 10 {
         fmt.Println("i>10,中断")
         break
      }
   }
}

以上代码执行到i等于11的时候则会中断循环。

在Golang里的循环语句里同样支持continue和break,但Golang里的循环语句的break关键字有一个更特别的玩法,就是可以指定中断某个标签处的循环,看如下例子:

package main

import (
   "fmt"
)

func main()  {
   ILoop:
   for i := 0; i < 10; i++ {
      JLoop:
      for j := 0; j < 5 ; j++  {
         if i == 4 {
            fmt.Println("中断ILoop循环")
            break ILoop
         }
         if j == 3 {
            fmt.Println("中断JLoop循环")
            break JLoop
         }
         fmt.Println(i, j)
      }
   }
}

以上语句逻辑是i等于4的时候中断外部的ILoop循环,j等于3的时候中断JLoop循环,嵌套循环语句先执行的是子循环,所以执行结果为:

0 0
0 1
0 2
中断JLoop循环
1 0
1 1
1 2
中断JLoop循环
2 0
2 1
2 2
中断JLoop循环
3 0
3 1
3 2
中断JLoop循环
中断ILoop循环

最后简单总结下:

  1. Golang里的循环语句只支持for关键字

  2. for后的语句支持多重赋值表达式

  3. for后面的表达式可以不写,而通过某种条件来中断

  4. Golang里的循环语句的break关键字支持中断指定的某个循环