天天看點

golang基礎學習--Go 語言for循環語句

Go語言隻有for循環這一種循環結構。

基本的for循環包含三個由分号分開的組成部分:

1.初始化語句:在第一次循環執行前被執行

2.循環條件表達式:每輪疊代開始前被求值

3.後置語句:每輪疊代後被執行

初始化語句一般是一個短變量聲明,這裡聲明的變量僅在整個 for 循環語句可見。

如果條件表達式的值變為 false,那麼疊代将終止。

注意:不像 C,Java,或者 Javascript 等其他語言,Go語言中的for循環語句的三個部分不需要用括号括起來,但循環體必須用 { } 括起來。

文法

Go語言的For循環有3中形式,隻有其中的一種使用分号。

和 C 語言的 for 一樣:

for init; condition; post { }
           

和 C 的 while 一樣:

for condition { }
           

和 C 的 for(;? 一樣:

for { }

init: 一般為指派表達式,給控制變量賦初值;
condition: 關系表達式或邏輯表達式,循環控制條件;
post: 一般為指派表達式,給控制變量增量或減量。
           

for語句執行過程如下:

①先對表達式1賦初值;
②判别指派表達式 init 是否滿足給定條件,若其值為真,滿足循環條件,則執行循環體内語句,然後執行 post,
進入第二次循環,再判别 condition;否則判斷 condition 的值為假,不滿足條件,就終止for循環,執行循環體外語句。
           

for 循環的 range 格式可以對 slice、map、數組、字元串等進行疊代循環。格式如下:

for key, value := range oldMap {
    newMap[key] = value
}
           

for語句文法流程如下圖所示:

golang基礎學習--Go 語言for循環語句

示例

package main

import "fmt"

func main() {

   var b int = 15
   var a int

   numbers := [6]int{1, 2, 3, 5} 

   /* for 循環 */
   for a := 0; a < 10; a++ {
      fmt.Printf("a 的值為: %d\n", a)
   }

   for a < b {
      a++
      fmt.Printf("a 的值為: %d\n", a)
   }

   for i,x:= range numbers {
      fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)
   }   
}
           
a 的值為: 0
a 的值為: 1
a 的值為: 2
a 的值為: 3
a 的值為: 4
a 的值為: 5
a 的值為: 6
a 的值為: 7
a 的值為: 8
a 的值為: 9
a 的值為: 1
a 的值為: 2
a 的值為: 3
a 的值為: 4
a 的值為: 5
a 的值為: 6
a 的值為: 7
a 的值為: 8
a 的值為: 9
a 的值為: 10
a 的值為: 11
a 的值為: 12
a 的值為: 13
a 的值為: 14
a 的值為: 15
第 0 位 x 的值 = 1
第 1 位 x 的值 = 2
第 2 位 x 的值 = 3
第 3 位 x 的值 = 5
第 4 位 x 的值 = 0
第 5 位 x 的值 = 0
           

循環嵌套

package main

import "fmt"

func main() {
   /* 定義局部變量 */
   var i, j int

   for i=2; i < 100; i++ {
      for j=2; j <= (i/j); j++ {
         if(i%j==0) {
            break; // 如果發現因子,則不是素數
         }
      }
      if(j > (i/j)) {
         fmt.Printf("%d  是素數\n", i);
      }
   }  
}
           

運作如下

2  是素數
3  是素數
5  是素數
7  是素數
11  是素數
13  是素數
17  是素數
19  是素數
23  是素數
29  是素數
31  是素數
37  是素數
41  是素數
43  是素數
47  是素數
53  是素數
59  是素數
61  是素數
67  是素數
71  是素數
73  是素數
79  是素數
83  是素數
89  是素數
97  是素數
           
go