Hi,大家好,我是明哥。
在自己學習 Golang 的這段時間里,我寫了詳細的學習筆記放在我的個人微信公眾號 《Go編程時光》,對於 Go 語言,我也算是個初學者,因此寫的東西應該會比較適合剛接觸的同學,如果你也是剛學習 Go 語言,不防關注一下,一起學習,一起成長。
我的在線博客:http://golang.iswbm.com
我的 Github:github.com/iswbm/GolangCodingTime
Go里的流程控制方法還是挺豐富,整理了下有如下這么多種:
- if - else 條件語句
- switch - case 選擇語句
- for - range 循環語句
- goto 無條件跳轉語句
- defer 延遲執行
上一篇講了switch - case 選擇語句,今天先來講講 for 循環語句。
0. 語句模型
這是 for 循環的基本模型。
for [condition | ( init; condition; increment ) | Range]
{
statement(s);
}
可以看到 for 后面,可以接三種類型的表達式。
- 接一個條件表達式
- 接三個表達式
- 接一個 range 表達式
但其實還有第四種
- 不接表達式
1. 接一個條件表達式
這個例子會打印 1 到 5 的數值。
a := 1
for a <= 5 {
fmt.Println(a)
a ++
}
輸出如下
1
2
3
4
5
2. 接三個表達式
for 后面,緊接着三個表達式,使用 ;
分隔。
這三個表達式,各有各的用途
- 第一個表達式:初始化控制變量,在整個循環生命周期內,只運行一次;
- 第二個表達式:設置循環控制條件,當返回true,繼續循環,返回false,結束循環;
- 第三個表達式:每次循完開始(除第一次)時,給控制變量增量或減量。
這邊的例子和上面的例子,是等價的。
import "fmt"
func main() {
for i := 1; i <= 5; i++ {
fmt.Println(i)
}
}
輸出如下
1
2
3
4
5
2. 不接表達式:無限循環
在 Go 語言中,沒有 while 循環,如果要實現無限循環,也完全可以 for 來實現。
當你不加任何的判斷條件時, 就相當於你每次的判斷都為 true,程序就會一直處於運行狀態,但是一般我們並不會讓程序處於死循環,在滿足一定的條件下,可以使用關鍵字 break
退出循環體,也可以使用 continue
直接跳到下一循環。
下面兩種寫法都是無限循環的寫法。
for {
代碼塊
}
// 等價於
for ;; {
代碼塊
}
舉個例子
import "fmt"
func main() {
var i int = 1
for {
if i > 5 {
break
}
fmt.Printf("hello, %d\n", i)
i++
}
}
輸出如下
hello, 1
hello, 2
hello, 3
hello, 4
hello, 5
3. 接 for-range 語句
遍歷一個可迭代對象,是一個很常用的操作。在 Go 可以使用 for-range 的方式來實現。
range 后可接數組、切片,字符串等
由於 range 會返回兩個值:索引和數據,若你后面的代碼用不到索引,需要使用 _
表示 。
import "fmt"
func main() {
myarr := [...]string{"world", "python", "go"}
for _, item := range myarr {
fmt.Printf("hello, %s\n", item)
}
}
輸出如下
hello, world
hello, python
hello, go
系列導讀
24. 超詳細解讀 Go Modules 前世今生及入門使用