1. 程式人生 > 資訊 >NASA 力挺馬斯克 SpaceX,阿爾忒彌斯 3 號任務以後將使用星艦進行登月計劃

NASA 力挺馬斯克 SpaceX,阿爾忒彌斯 3 號任務以後將使用星艦進行登月計劃

Go 語言迴圈語句 Go 語言 for 迴圈 Go 語言迴圈巢狀 以下例項使用迴圈巢狀來輸出 2 到 100 間的素數: Go 語言 break 語句 Go 語言 continue 語句 Go 語言 goto 語句 Go 語言迴圈語句 在不少實際問題中有許多具有規律性的重複操作,因此在程式中就需要重複執行某些語句。 以下為大多程式語言迴圈程式的流程圖: Go 語言提供了以下幾種型別迴圈處理語句:
迴圈型別 描述
for 迴圈 重複執行語句塊
迴圈巢狀 在 for 迴圈中巢狀一個或多個 for 迴圈
  迴圈控制語句 迴圈控制語句可以控制迴圈體內語句的執行過程。 GO 語言支援以下幾種迴圈控制語句:
控制語句 描述
break 語句 經常用於中斷當前 for 迴圈或跳出 switch 語句
continue 語句 跳過當前迴圈的剩餘語句,然後繼續進行下一輪迴圈。
goto 語句 將控制轉移到被標記的語句。
  無限迴圈 如果迴圈中條件語句永遠不為 false 則會進行無限迴圈,我們可以通過 for 迴圈語句中只設置一個條件表示式來執行無限迴圈: 例項 package main   import "fmt"   func main() {     for true  {         fmt.Printf("這是無限迴圈。\n");
    } }     Go 語言 for 迴圈 for 迴圈是一個迴圈控制結構,可以執行指定次數的迴圈。 語法 Go 語言的 For 迴圈有 3 種形式,只有其中的一種使用分號。 和 C 語言的 for 一樣: for init; condition; post { } 和 C 的 while 一樣: for condition { } 和 C 的 for(;;) 一樣: for { }
  • init: 一般為賦值表示式,給控制變數賦初值;
  • condition: 關係表示式或邏輯表示式,迴圈控制條件;
  • post: 一般為賦值表示式,給控制變數增量或減量。
for語句執行過程如下:
  • 1、先對錶達式 1 賦初值;
  • 2、判別賦值表示式 init 是否滿足給定條件,若其值為真,滿足迴圈條件,則執行迴圈體內語句,然後執行 post,進入第二次迴圈,再判別 condition;否則判斷 condition 的值為假,不滿足條件,就終止for迴圈,執行迴圈體外語句。
for 迴圈的 range 格式可以對 slice、map、陣列、字串等進行迭代迴圈。格式如下: for key, value := range oldMap { newMap[key] = value } for 語句語法流程如下圖所示:

 

 

例項 計算 1 到 10 的數字之和: 例項 package main   import "fmt"   func main() {         sum := 0         for i := 0; i <= 10; i++ {                 sum += i         }         fmt.Println(sum) } 輸出結果為: 55 init 和 post 引數是可選的,我們可以直接省略它,類似 While 語句。 以下例項在 sum 小於 10 的時候計算 sum 自相加後的值: 例項 package main   import "fmt"   func main() {         sum := 1         for ; sum <= 10; {                 sum += sum         }         fmt.Println(sum)           // 這樣寫也可以,更像 While 語句形式         for sum <= 10{                 sum += sum         }         fmt.Println(sum) } 輸出結果為: 16 16 無限迴圈: 例項 package main   import "fmt"   func main() {         sum := 0         for {             sum++ // 無限迴圈下去         }         fmt.Println(sum) // 無法輸出 } 要停止無限迴圈,可以在命令視窗按下ctrl-c 。 For-each range 迴圈 這種格式的迴圈可以對字串、陣列、切片等進行迭代輸出元素。 例項 package main import "fmt"   func main() {         strings := []string{"google", "runoob"}         for i, s := range strings {                 fmt.Println(i, s)         }             numbers := [6]int{1, 2, 3, 5}         for i,x:= range numbers {                 fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)         }   } 以上例項執行輸出結果為: 0 google 1 runoob 第 0 位 x 的值 = 1 第 1 位 x 的值 = 2 第 2 位 x 的值 = 3 第 3 位 x 的值 = 5 第 4 位 x 的值 = 0 第 5 位 x 的值 = 0 Go 語言迴圈巢狀 Go 語言允許使用者在迴圈內使用迴圈。接下來我們將為大家介紹巢狀迴圈的使用。 語法 以下為 Go 語言巢狀迴圈的格式: for [condition |  ( init; condition; increment ) | Range] {    for [condition |  ( init; condition; increment ) | Range]    {       statement(s);    }    statement(s); } 例項 以下例項使用迴圈巢狀來輸出 2 到 100 間的素數: 例項 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);       }    }   } Go 語言 break 語句 Go 語言中 break 語句用於以下兩方面:
  • 用於迴圈語句中跳出迴圈,並開始執行迴圈之後的語句。
  • break 在 switch(開關語句)中在執行一條 case 後跳出語句的作用。
  • 在多重迴圈中,可以用標號 label 標出想 break 的迴圈。
語法 break 語法格式如下: break; break 語句流程圖如下:

 

 

例項 在變數 a 大於 15 的時候跳出迴圈: 例項 package main   import "fmt"   func main() {    /* 定義區域性變數 */    var a int = 10      /* for 迴圈 */    for a < 20 {       fmt.Printf("a 的值為 : %d\n", a);       a++;       if a > 15 {          /* 使用 break 語句跳出迴圈 */          break;       }    } } 以上例項執行結果為: a 的值為 : 10 a 的值為 : 11 a 的值為 : 12 a 的值為 : 13 a 的值為 : 14 a 的值為 : 15 以下例項有多重迴圈,演示了使用標記和不使用標記的區別: 例項 package main   import "fmt"   func main() {       // 不使用標記     fmt.Println("---- break ----")     for i := 1; i <= 3; i++ {         fmt.Printf("i: %d\n", i)                 for i2 := 11; i2 <= 13; i2++ {                         fmt.Printf("i2: %d\n", i2)                         break                 }         }       // 使用標記     fmt.Println("---- break label ----")     re:         for i := 1; i <= 3; i++ {             fmt.Printf("i: %d\n", i)             for i2 := 11; i2 <= 13; i2++ {                 fmt.Printf("i2: %d\n", i2)                 break re             }         } } 以上例項執行結果為: ---- break ---- i: 1 i2: 11 i: 2 i2: 11 i: 3 i2: 11 ---- break label ---- i: 1 i2: 11       Go 語言 continue 語句 Go 語言的 continue 語句 有點像 break 語句。但是 continue 不是跳出迴圈,而是跳過當前迴圈執行下一次迴圈語句。 for 迴圈中,執行 continue 語句會觸發 for 增量語句的執行。 在多重迴圈中,可以用標號 label 標出想 continue 的迴圈。 語法 continue 語法格式如下: continue; continue 語句流程圖如下:

 

 

例項 在變數 a 等於 15 的時候跳過本次迴圈執行下一次迴圈: 例項 package main   import "fmt"   func main() {    /* 定義區域性變數 */    var a int = 10      /* for 迴圈 */    for a < 20 {       if a == 15 {          /* 跳過此次迴圈 */          a = a + 1;          continue;       }       fmt.Printf("a 的值為 : %d\n", a);       a++;        }   } 以上例項執行結果為: a 的值為 : 10 a 的值為 : 11 a 的值為 : 12 a 的值為 : 13 a 的值為 : 14 a 的值為 : 16 a 的值為 : 17 a 的值為 : 18 a 的值為 : 19 以下例項有多重迴圈,演示了使用標記和不使用標記的區別: 例項 package main   import "fmt"   func main() {       // 不使用標記     fmt.Println("---- continue ---- ")     for i := 1; i <= 3; i++ {         fmt.Printf("i: %d\n", i)             for i2 := 11; i2 <= 13; i2++ {                 fmt.Printf("i2: %d\n", i2)                 continue             }     }       // 使用標記     fmt.Println("---- continue label ----")     re:         for i := 1; i <= 3; i++ {             fmt.Printf("i: %d\n", i)                 for i2 := 11; i2 <= 13; i2++ {                     fmt.Printf("i2: %d\n", i2)                     continue re                 }         } } 以上例項執行結果為: ---- continue ---- i: 1 i2: 11 i2: 12 i2: 13 i: 2 i2: 11 i2: 12 i2: 13 i: 3 i2: 11 i2: 12 i2: 13 ---- continue label ---- i: 1 i2: 11 i: 2 i2: 11 i: 3 i2: 11 Go 語言 goto 語句 Go 語言的 goto 語句可以無條件地轉移到過程中指定的行。 goto 語句通常與條件語句配合使用。可用來實現條件轉移, 構成迴圈,跳出迴圈體等功能。 但是,在結構化程式設計中一般不主張使用 goto 語句, 以免造成程式流程的混亂,使理解和除錯程式都產生困難。 語法 goto 語法格式如下: goto label; .. . label: statement; goto 語句流程圖如下:

 

 

例項 在變數 a 等於 15 的時候跳過本次迴圈並回到迴圈的開始語句 LOOP 處: 例項 package main   import "fmt"   func main() {    /* 定義區域性變數 */    var a int = 10      /* 迴圈 */    LOOP: for a < 20 {       if a == 15 {          /* 跳過迭代 */          a = a + 1          goto LOOP       }       fmt.Printf("a的值為 : %d\n", a)       a++        }   } 以上例項執行結果為: a的值為 : 10 a的值為 : 11 a的值為 : 12 a的值為 : 13 a的值為 : 14 a的值為 : 16 a的值為 : 17 a的值為 : 18 a的值為 : 19