这是 Golang 系列教程 中的第 10 篇。
if else
看代码比文字更容易理解。让我们从一个简单的例子开始,它将把一个手指的编号作为输入,然后输出该手指对应的名字。比如 0 是拇指,1 是食指等等。
package main
import (
"fmt"
)
func main() {
finger := 4
switch finger {
case 1:
fmt.Println("Thumb")
case 2:
fmt.Println("Index")
case 3:
fmt.Println("Middle")
case 4:
fmt.Println("Ring")
case 5:
fmt.Println("Pinky")
}
}
在线运行程序[1]
switch fingerfingercasefingerRing
casemain.go:18:2:在tmp / sandbox887814166 / main.go:16:7
package main
import (
"fmt"
)
func main() {
finger := 4
switch finger {
case 1:
fmt.Println("Thumb")
case 2:
fmt.Println("Index")
case 3:
fmt.Println("Middle")
case 4:
fmt.Println("Ring")
case 4://重复项
fmt.Println("Another Ring")
case 5:
fmt.Println("Pinky")
}
}
在线运行程序[2]
默认情况(Default Case)
我们每个人一只手只有 5 个手指。如果我们输入了不正确的手指编号会发生什么?这个时候就应该是属于默认情况。当其他情况都不匹配时,将运行默认情况。
package main
import (
"fmt"
)
func main() {
switch finger := 8; finger {
case 1:
fmt.Println("Thumb")
case 2:
fmt.Println("Index")
case 3:
fmt.Println("Middle")
case 4:
fmt.Println("Ring")
case 5:
fmt.Println("Pinky")
default: // 默认情况
fmt.Println("incorrect finger number")
}
}
在线运行程序[3]
fingerincorrect finger number
fingerfingerswitch finger:= 8; fingerfingerfinger
多表达式判断
通过用逗号分隔,可以在一个 case 中包含多个表达式。
package main
import (
"fmt"
)
func main() {
letter := "i"
switch letter {
case "a", "e", "i", "o", "u": // 一个选项多个表达式
fmt.Println("vowel")
default:
fmt.Println("not a vowel")
}
}
在线运行程序[4]
case "a","e","i","o","u":vowel
无表达式的 switch
switch truecase
package main
import (
"fmt"
)
func main() {
num := 75
switch { // 表达式被省略了
case num >= 0 && num <= 50:
fmt.Println("num is greater than 0 and less than 50")
case num >= 51 && num <= 100:
fmt.Println("num is greater than 51 and less than 100")
case num >= 101:
fmt.Println("num is greater than 100")
}
}
在线运行程序[5]
case num >= 51 && <= 100:num is greater than 51 and less than 100if else
Fallthrough 语句
fallthrough
75 is lesser than 10075 is lesser than 200
package main
import (
"fmt"
)
func number() int {
num := 15 * 5
return num
}
func main() {
switch num := number(); { // num is not a constant
case num 50:
fmt.Printf("%d is lesser than 50\n", num)
fallthrough
case num 100:
fmt.Printf("%d is lesser than 100\n", num)
fallthrough
case num 200:
fmt.Printf("%d is lesser than 200", num)
}
}
在线运行程序[6]
number()case num < 100:75 is lesser than 100fallthrough75 is lesser than 200
75 is lesser than 100
75 is lesser than 200
fallthroughfallthrough statement out of place
这也是我们本教程的最后内容。还有一种 switch 类型称为 type switch 。我们会在学习接口的时候再研究这个。
希望您能享受本次阅读。请留下您宝贵的意见和建议。
上一教程 - 循环
下一教程 - Arrays 和 Slices[7]
推荐阅读
Go 经典入门系列 9:循环