您好,登錄后才能下訂單哦!
循環(huán)語句是用來重復執(zhí)行某一段代碼。
for
是 Go 語言唯一的循環(huán)語句。Go 語言中并沒有其他語言比如 C 語言中的 while
和 do while
循環(huán)。
for initialisation; condition; post {
}
初始化語句只執(zhí)行一次。循環(huán)初始化后,將檢查循環(huán)條件。如果條件的計算結果為 true
,則 {}
內的循環(huán)體將執(zhí)行,接著執(zhí)行 post 語句。post 語句將在每次成功循環(huán)迭代后執(zhí)行。在執(zhí)行 post 語句后,條件將被再次檢查。如果為 true
, 則循環(huán)將繼續(xù)執(zhí)行,否則 for 循環(huán)將終止。(譯注:這是典型的 for 循環(huán)三個表達式,第一個為初始化表達式或賦值語句;第二個為循環(huán)條件判定表達式;第三個為循環(huán)變量修正表達式,即此處的 post )
這三個組成部分,即初始化,條件和 post 都是可選的。讓我們看一個例子來更好地理解循環(huán)。
讓我們用 for
循環(huán)寫一個打印出從 1 到 10 的程序。
package main
import (
"fmt"
)
func main() {
for i := 1; i <= 10; i++ {
fmt.Printf(" %d",i)
}
}
在上面的程序中,i 變量被初始化為 1。條件語句會檢查 i 是否小于 10。如果條件成立,i 就會被打印出來,否則循環(huán)就會終止。循環(huán)語句會在每一次循環(huán)完成后自增 1。一旦 i 變得比 10 要大,循環(huán)中止。
上面的程序會打印出 1 2 3 4 5 6 7 8 9 10
。
在 for
循環(huán)中聲明的變量只能在循環(huán)體內訪問,因此 i 不能夠在循環(huán)體外訪問。
break
語句用于在完成正常執(zhí)行之前突然終止 for 循環(huán),之后程序將會在 for 循環(huán)下一行代碼開始執(zhí)行。
讓我們寫一個從 1 打印到 5 并且使用 break
跳出循環(huán)的程序。
package main
import (
"fmt"
)
func main() {
for i := 1; i <= 10; i++ {
if i > 5 {
break //loop is terminated if i > 5
}
fmt.Printf("%d ", i)
}
fmt.Printf("\nline after for loop")
}
在上面的程序中,在循環(huán)過程中 i 的值會被判斷。如果 i 的值大于 5 然后 break
語句就會執(zhí)行,循環(huán)就會被終止。打印語句會在 for
循環(huán)結束后執(zhí)行,上面程序會輸出為
1 2 3 4 5
line after for loop
continue
語句用來跳出 for
循環(huán)中當前循環(huán)。在 continue
語句后的所有的 for
循環(huán)語句都不會在本次循環(huán)中執(zhí)行。循環(huán)體會在一下次循環(huán)中繼續(xù)執(zhí)行。
讓我們寫一個打印出 1 到 10 并且使用 continue
的程序。
package main
import (
"fmt"
)
func main() {
for i := 1; i <= 10; i++ {
if i%2 == 0 {
continue
}
fmt.Printf("%d ", i)
}
}
在上面的程序中,這行代碼 if i%2==0
會判斷 i 除以 2 的余數(shù)是不是 0,如果是 0,這個數(shù)字就是偶數(shù)然后執(zhí)行 continue
語句,從而控制程序進入下一個循環(huán)。因此在 continue
后面的打印語句不會被調用而程序會進入一下個循環(huán)。上面程序會輸出 1 3 5 7 9
。
讓我們寫更多的代碼來演示 for
循環(huán)的多樣性吧
下面這個程序打印出從 0 到 10 所有的偶數(shù)。
package main
import (
"fmt"
)
func main() {
i := 0
for ;i <= 10; { // initialisation and post are omitted
fmt.Printf("%d ", i)
i += 2
}
}
正如我們已經(jīng)知道的那樣,for
循環(huán)的三部分,初始化語句、條件語句、post 語句都是可選的。在上面的程序中,初始化語句和 post 語句都被省略了。i 在 for
循環(huán)外被初始化成了 0。只要 i<=10
循環(huán)就會被執(zhí)行。在循環(huán)中,i 以 2 的增量自增。上面的程序會輸出 0 2 4 6 8 10
。
上面程序中 for
循環(huán)中的分號也可以省略。這個格式的 for
循環(huán)可以看作是二選一的 for while
循環(huán)。上面的程序可以被重寫成:
package main
import (
"fmt"
)
func main() {
i := 0
for i <= 10 { //semicolons are ommitted and only condition is present
fmt.Printf("%d ", i)
i += 2
}
}
在 for
循環(huán)中可以聲明和操作多個變量。讓我們寫一個使用聲明多個變量來打印下面序列的程序。
10 * 1 = 10
11 * 2 = 22
12 * 3 = 36
13 * 4 = 52
14 * 5 = 70
15 * 6 = 90
16 * 7 = 112
17 * 8 = 136
18 * 9 = 162
19 * 10 = 190
package main
import (
"fmt"
)
func main() {
for no, i := 10, 1; i <= 10 && no <= 19; i, no = i+1, no+1 { //multiple initialisation and increment
fmt.Printf("%d * %d = %d\n", no, i, no*i)
}
}
在上面的程序中 no
和 i
被聲明然后分別被初始化為 10 和 1 。在每一次循環(huán)結束后 no
和 i
都自增 1 。布爾型操作符 &&
被用來確保 i 小于等于 10 并且 no
小于等于 19 。
無限循環(huán)的語法是:
for {
}
下一個程序就會一直打印Hello World
不會停止。
package main
import "fmt"
func main() {
for {
fmt.Println("Hello World")
}
}
在你本地系統(tǒng)上運行,來無限的打印 “Hello World” 。
這里還有一個 range
結構,它可以被用來在 for
循環(huán)中操作數(shù)組對象。當我們學習數(shù)組時我們會補充這方面內容。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。