在編寫 Go 程序的時候,我們不僅會用前面學到的數據結構來存儲數據,還會用到 if、switch、for 來進行條件判斷和流程控制,今天我們就來一起學習下它們。
if
if 主要用於條件判斷,語法爲:
if 條件 {
# 業務代碼
}
先看一個簡單例子:
package main
import "fmt"
func main() {
age := 7
if age > 6 {
fmt.Println("It's primary school")
}
}
我們可以在條件中使用 & 或 || 來進行組合判斷:
package main
import "fmt"
func main() {
age := 7
if age > 6 && age <= 12 {
fmt.Println("It's primary school")
}
}
我們還可以使用 if..else if..else 來實現多分支的條件判斷:
package main
import "fmt"
func main() {
age := 13
if age > 6 && age <= 12 {
fmt.Println("It's primary school")
} else if age > 12 && age <= 15 {
fmt.Println("It's middle school")
} else {
fmt.Println("It's high school")
}
}
switch
如果我們的條件分支太多,可以考慮使用 switch 替換 if, 例如:
package main
import "fmt"
func main() {
age := 10
switch age {
case 5:
fmt.Println("The age is 5")
case 7:
fmt.Println("The age is 7")
case 10:
fmt.Println("The age is 10")
default:
fmt.Println("The age is unkown")
}
}
注意:在 Go 中 switch 只要匹配中了就會中止剩餘的匹配項,這和 Java 很大不一樣,它需要使用 break 來主動跳出。
switch 的 case 條件可以是多個值,例如:
package main
import "fmt"
func main() {
age := 7
switch age {
case 7, 8, 9, 10, 11, 12:
fmt.Println("It's primary school")
case 13, 14, 15:
fmt.Println("It's middle school")
case 16, 17, 18:
fmt.Println("It's high school")
default:
fmt.Println("The age is unkown")
}
}
注意: 同一個 case 中的多值不能重複。
switch 還可以使用 if..else 作爲 case 條件,例如:
package main
import "fmt"
func main() {
age := 7
switch {
case age >= 6 && age <= 12:
fmt.Println("It's primary school")
case age >= 13 && age <= 15:
fmt.Println("It's middle school")
case age >= 16 && age <= 18:
fmt.Println("It's high school")
default:
fmt.Println("The age is unkown")
}
}
小技巧: 使用 switch 對 interface{} 進行斷言,例如:
package main
import "fmt"
func checkType(i interface{}) {
switch v := i.(type) {
case int:
fmt.Printf("%v is an in\n", v)
case string:
fmt.Printf("%v is a string\n", v)
default:
fmt.Printf("%v's type is unkown\n", v)
}
}
func main() {
checkType(8)
checkType("hello, world")
}
for
使用 for 來進行循環操作,例如:
package main
import "fmt"
func main() {
for i := 0; i < 2; i++ {
fmt.Println("loop with index", i)
}
}
使用 for..range 對數組、切片、map、 字符串等進行循環操作,例如:
package main
import "fmt"
func main() {
numbers := []int{1, 2, 3}
for i, v := range numbers {
fmt.Printf("numbers[%d] is %d\n", i, v)
}
}
注意: 這裏的 i、v 是切片元素的位置索引和值。
package main
import "fmt"
func main() {
cityCodes := map[string]int{
"北京": 1,
"上海": 2,
}
for i, v := range cityCodes {
fmt.Printf("%s is %d\n", i, v)
}
}
注意: 這裏的 i、v 是 map 的 一組鍵值對的鍵和值。
使用 continue 和 break 對循環進行控制,例如:
package main
import "fmt"
func main() {
numbers := []int{1, 2, 3, 4, 5}
for i, v := range numbers {
if v == 4 {
break
}
if v%2 == 0 {
continue
}
fmt.Printf("numbers[%d] is %d\n", i, v)
}
}
注意:
break 會結束所有循環。
continue 會跳過當前循環直接進入下一次循環。
http://www.songjiayang.com/posts/liu-cheng-kong-zhi-zhi-fen-zhi-xun-huan
Golang零基礎入門課程
網絡課(騰訊課堂)
6.15正式開班上課
51reboot 今晚八點準時 go 分享,小夥伴們快來學習吧!添加小助手獲取直播鏈接
51reboot 運維前端課程正在火熱招生和中,想要學習的小夥伴可以找小助手諮詢!
添加小助手WeChat:17812796384