1. 程式人生 > >Go語言循環判斷的使用~

Go語言循環判斷的使用~

label 執行c 開發者 http 字符 r語 當前 測試 span

Go 語言條件語句

  條件語句需要開發者通過指定一個或多個條件,並通過測試條件是否為 true 來決定是否執行指定語句,並在條件為 false 的情況在執行另外的語句。

下圖展示了程序語言中條件語句的結構:

技術分享

if 語句由布爾表達式後緊跟一個或多個語句組成。

語法

Go 編程語言中 if 語句的語法如下

if 布爾表達式 {
   // 在布爾表達式為 true 時執行 
}

 栗子~

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 func  main()  {
 8     //定義局部變量
 9     a := 85
10
11 //使用go中的if判斷語句 12 if a > 80 { 13 //滿足判斷條件,執行輸出一下內容 14 fmt.Println("成績良好~,分數為:", a) 15 } 16 }

以上代碼執行結果為:

成績良好~,分數為: 85

Go 語言 if...else 語句

if 語句 後可以使用可選的 else 語句, else 語句中的表達式在布爾表達式為 false 時執行。

語法

Go 編程語言中 if...else 語句的語法如下:

if 布爾表達式 {
   //判斷條件為真時候需要執行的代碼塊
} else {
   //判斷條件為假的時候需要執行的代碼塊
}
 
栗子~

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 func  main()  {
 8     //定義局部變量
 9     a := 30
10 
11     if a > 40{
12         //判斷條件變量a的值如果大於40,則執行下面的代碼塊,輸出大於40哦~
13         fmt.Println("大於40哦~")
14     }else {
15         //判斷條件不滿足大於40,則執行下面的代碼塊輸出小於40哦~
16         fmt.Println("小於40哦~")
17     }
18     //打印變量a的值
19 fmt.Println("變量a的值為:",a) 20 }

執行結果為

小於40哦~
變量a的值為: 30

Go 語言循環語句

在不少實際問題中有許多具有規律性的重復操作,因此在程序中就需要重復執行某些語句,有些循環是有循環次數,有些事無限循環的,下面將會舉例說明。

語法

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

和 C 語言的 for 一樣:

for 初始化變量;判斷條件;修正變量{}

和 C 的 while 一樣:

for 判斷條件 {}

無限循環(死循環)

for { }

for語句執行過程如下:

  1. 先對變量初始化賦值
  2. 判斷初始化的變量是否滿足循環的條件,如果滿足即為真,則執行循環內部的代碼塊,然後執行修正條件(遞增++或者遞減--),然後進入第二 第三...輪循環,直到條件不滿足,循環結束!

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

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

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

技術分享


栗子~

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 
 8 func main(){
 9     //初始化局部變量sum,用於求和的變量
10     sum := 0
11     //初始化變量i為1,判斷條件為i小於等於100,修正判斷條件的是每循環一次i遞增+1
12     for i := 1; i<=100; i++{
13         //每一次循環都讓當前的sum值加上當前循環i的值
14         sum += i
15     }
16     //循環結束以後100之內的所有正整數的和
17     fmt.Println("100之內整數的和為:", sum)
18 
19 
20     var i int = 15
21     var j int
22     //當變量j小於變量i的時候進入循環體
23     for j < i {
24         //修正循環體的條件,每循環一次j+1
25         j++
26         fmt.Println("j的值為:", j)
27     }
28 
29     //初始化局部變量l1(10位的整數型數組)
30     l1 := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
31     //循環數組
32     for index,v := range l1{
33         //打印數組每個索引位置上的元素
34         fmt.Printf("第 %d 位的元素為: %d\n", index, v)
35     }
36 
37 }

以上代碼執行結果為:

100之內整數的和為: 5050
j的值為: 1
j的值為: 2
j的值為: 3
j的值為: 4
j的值為: 5
j的值為: 6
j的值為: 7
j的值為: 8
j的值為: 9
j的值為: 10
j的值為: 11
j的值為: 12
j的值為: 13
j的值為: 14
j的值為: 15
第 0 位的元素為: 11 位的元素為: 22 位的元素為: 33 位的元素為: 44 位的元素為: 55 位的元素為: 66 位的元素為: 77 位的元素為: 88 位的元素為: 99 位的元素為: 10

Go 語言允許用戶在循環內使用循環。接下來我們將為大家介紹嵌套循環的使用

語法

以下為 Go 語言嵌套循環的格式:

for [判斷條件 |  ( 初始化變量; 判斷條件; 修正判斷條件的遞增或者遞減 ) | Range]
{
    for [判斷條件 |  ( 初始化變量; 判斷條件; 修正判斷條件的遞增或者遞減 ) | Range]
    {
        循環中的代碼塊;
    }
    循環外的代碼塊;
}

栗子~

以下實例使用循環嵌套來輸出 2 到 100 間的素數:



 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 func main(){
 8     //定義局部變量
 9     var  i, j int
10 
11     for i=2; i < 100; i++ {
12         for j=2; j <= (i/j); j++ {
13             if i%j == 0 {
14                 break//如果發現因子,則不是素數,退出當前的循環體
15             }
16         }
17         if j> (i/j) {
18             fmt.Printf("%d 是素數\n", i)
19         }
20     }
21 
22 }

以上代碼執行結果為:

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 語言 break 語句

Go 語言中 break 語句用於以下兩方面:

  1. 用於循環語句中跳出循環,並開始執行循環之後的語句。
  2. break在switch(開關語句)中在執行一條case後跳出語句的作用。

break 語句流程圖如下:

技術分享

栗子~

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 func main(){
 8     for i := 1;i<10;i++{
 9         //當i的第8次循環時候,跳出整個循環體
10         if i == 8{
11             fmt.Printf("for的第 %d 次循環,循環中遇到break退出整個循環體咯~",i)
12             //跳出整個循環體
13             break
14         }
15         fmt.Printf("for的第 %d 次循環.\n",i)
16     }
17 
18 }

以上代碼執行結果為:

for的第 1 次循環.
for的第 2 次循環.
for的第 3 次循環.
for的第 4 次循環.
for的第 5 次循環.
for的第 6 次循環.
for的第 7 次循環.
for的第 8 次循環,循環中遇到break退出整個循環體咯~

Go 語言 continue 語句

Go語言的continue語句有點像break語句。但是continue不是跳出整個for循環,而是跳過當前循環而執行下一次循環語句。

for循環中,執行continue語句會觸發for增量語句的執行

栗子~

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 func main(){
 8 
 9     var sum int = 0
10     for i := 1; i<=100; i++ {
11         //當變量i和2取余數不等於0,即代表是奇數,就跳出本輪循環執行下次循環
12         if i%2 != 0 {
13             //跳過本輪循環執行下一次循環
14             continue
15         } else {
16             //當時偶數的時候,就做和的疊加
17             sum += i
18         }
19     }
20     fmt.Printf("100之內所有偶數的和為: %d", sum)
21 }

以上代碼執行結果為:

100之內所有偶數的和為: 2550

Go 語言 goto 語句

Go 語言的 goto 語句可以無條件地轉移到過程中指定的行。

goto語句通常與條件語句配合使用。可用來實現條件轉移, 構成循環,跳出循環體等功能。

但是,在結構化程序設計中一般不主張使用goto語句, 以免造成程序流程的混亂,使理解和調試程序都產生困難。

語法

goto 語法格式如下:

goto LABEL;
..
.
LABEL: 代碼段;

break 語句流程圖如下:

技術分享

栗子~

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 func main(){
 8     for i := 1; i<10; i++{
 9         //當第六次循環的時候,滿足判斷條件,執行goto
10         if i == 6{
11             //會直接調到後面的LABEL對應的語句,循環將不再繼續
12             goto LABEL
13         }else{
14             fmt.Printf("for循環內的第%d次循環.\n", i)
15         }
16     }
17     LABEL: fmt.Printf("循環到第6次咯,寶寶不要在循環了~")
18     fmt.Println("我是goto下面的語句~")
19 
20 }

以上代碼執行結果為:

for循環內的第1次循環.
for循環內的第2次循環.
for循環內的第3次循環.
for循環內的第4次循環.
for循環內的第5次循環.
循環到第6次咯,寶寶不要在循環了~我是goto下面的語句~

Go 語言 無限循環 語句

Go 語言的 選線 語句,只要你計算機不掛掉,你不手動終止程序,它可以陪你到天荒地老~~

栗子~

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 func main(){
 8     //無限循環語句~~陪你到天荒地老...
 9     for {
10         fmt.Println("在那美麗的大草原,有一群草泥馬,草泥馬 草泥馬 草泥馬~~~~")
11     }
12 
13 }

以上代碼執行結果為:

在那美麗的大草原,有一群草泥馬,草泥馬 草泥馬 草泥馬~~~~
在那美麗的大草原,有一群草泥馬,草泥馬 草泥馬 草泥馬~~~~
在那美麗的大草原,有一群草泥馬,草泥馬 草泥馬 草泥馬~~~~
在那美麗的大草原,有一群草泥馬,草泥馬 草泥馬 草泥馬~~~~
在那美麗的大草原,有一群草泥馬,草泥馬 草泥馬 草泥馬~~~~
在那美麗的大草原,有一群草泥馬,草泥馬 草泥馬 草泥馬~~~~
在那美麗的大草原,有一群草泥馬,草泥馬 草泥馬 草泥馬~~~~
在那美麗的大草原,有一群草泥馬,草泥馬 草泥馬 草泥馬~~~~
在那美麗的大草原,有一群草泥馬,草泥馬 草泥馬 草泥馬~~~~
在那美麗的大草原,有一群草泥馬,草泥馬 草泥馬 草泥馬~~~~

............................................

Go語言循環判斷的使用~