循環語句和跳轉語句

1、循環語句

在Go語言當中有兩種循環語句,一種是for循環,另一種是range迭代。

首先for循環的語法格式:

for 初始化條件; 判斷條件; 改變條件 {
...
}

如果條件滿足,那麼程序就會執行for裡面的語句,只有當條件不滿足時,程序就會跳出for循環。

舉例如明:

(1)、計算1 + 2 + 3 + ... + 100的結果,那麼利用for循環,可以這樣寫:

sum := 0
for i := 1; i <= 100; i++ {
sum += i
}
fmt.Println("sum = ", sum)

首先定義sum變量用於存儲計算值,該for循環的初始化為變量i為1,判斷條件就是i <= 100,改變條件就是每次i都加1,for循環的內容就是每次i的值都與sum相加並賦值給sum,結果為:

sum = 5050

(2)、計算2 + 4 + 6 + ... + 100的結果,即是計算100以內包含100的偶數之和:

sum := 0
for i := 2; i <= 100; i++ {
if i%2 == 0 {
sum += i
}
}
fmt.Println("sum = ", sum)

程序跟例子1差不多,只不過加了一個判斷條件,即i要能2整除,也即是偶數,才與sum相加並賦值給sum,結果為:

sum = 2550

下面再來看看range迭代的語法格式:

for 下標, 值 := range 被迭代內容 {
...
}

利用range迭代會返回兩個值,第1個值是被迭代內容的下標,第2個值是當前下標所對應的內容。當然如果值不寫的或者寫“_”,那麼這種方式都會將值的丟棄,即:

for 下標 := range 被迭代內容 {
...
}

for 下標, _ := range 被迭代內容 {
...
}

// 以上兩種方式都是會將值的內容丟棄

舉例說明:

(1)、打印字符串“jgyw”中的每個字符,即:

for i, item := range "jgyw" {
fmt.Printf("str[%d] = %c\\n", i, item)
}

輸出結果為:

str[0] = j
str[1] = g
str[2] = y
str[3] = w

range迭代器在數組、切片會經常用到,這個到以後會講解到。

2、跳轉語句

在其它編程語句當中跳轉語句一般是break和continue,那麼這兩個語句同樣也在Go語言當中有,同時在Go語言當中還有一個goto的跳轉語句。

首先講解break和continue語句:

(1)、使用範圍:

  • break語句只能在switch語句、循環語句當中
  • continue語句只能在循環語句當中

(2)、作用:

  • break語句是跳出switch語句或者跳出循環語句
  • continue語句跳過這次循環,進入下一次循環

舉例說明:

for i := 0; i < 5; i++ {
if i == 3 {
break
}
fmt.Println("break中i = ", i)
}

for i := 0; i < 5; i++ {
if i == 3 {
continue
}
fmt.Println("continue中i = ", i)
}

運行結果為:

break中i = 0
break中i = 1
break中i = 2
continue中i = 0
continue中i = 1
continue中i = 2
continue中i = 4

通過上面的結果可以發現break到i為3時就跳出這個for循環,而continue只是跳過了i為3時,接著運行下一次循環。

接下來講解goto語句,通過goto關鍵字可以讓程序跳到指的位置去執行,但是有一個條件就是跳轉範圍要在同一個函數內,不過值得一提就是,這個goto關鍵字儘量少用,因為這樣會搞得程序跳來跳去,感覺好亂。

舉例說明:

 fmt.Println("aaaaaaaaaaaaaa")
goto Test
fmt.Println("bbbbbbbbbbbbbbb")

Test:
fmt.Println("cccccccccccccc")

結果為:

aaaaaaaaaaaaaa
cccccccccccccc

程序當中goto Test,其中Test就是程序需要跳轉到的位置,即相當於一個標籤位置。


分享到:


相關文章: