go语言switch语句的用法,默认值,及强制执行的case代码的fallthrough
go语言的switch语句跟if...else if...的语句的功能几乎一样,不过switch语句写起来要更加简洁、方便。switch语句从上到下注意匹配case的表达式,直到找到匹配项,其语法如下:
go语言switch语法
switch expression {
case condition1:
do something 1
case condition2:
do something 2
......
case conditionN:
do something N
}
上述语法中,switch的表达式expression将于“{}”中的各个case的condition进行匹配,之上而下,直至匹配到为止。
switch基本用法实例
package main
import (
"fmt"
)
func main() {
switch 1 + 1 {
case 1:
fmt.Println("This is case 1")
case 2:
fmt.Println("This is case 2")
case 3 - 3:
fmt.Println("This is case 3")
}
}
代码输出:
This is case 2
代码解析
如上代码,鄙人尝试过将第三个case改成3-1这样的表达式,结果go语言报错提示value为2的case已经存在,说明case的值不能重复。
case无法匹配switch的情况使用default
当case的表达式的值都无法跟switch的相匹配,那么我们可以使用default来进行匹配,实例如下:
package main
import (
"fmt"
)
func main() {
fmt.Print("说出程序员的一个明显特征:")
var a string
fmt.Scanf("%s", &a)
switch a {
case "长得帅":
fmt.Println("你觉得程序员长得帅!")
case "有恋人":
fmt.Println("你说程序员都不是单身?")
case "有情趣":
fmt.Println("你觉得程序员很风趣?")
default:
fmt.Println("你可能说错了,程序员的理想是改变世界的人,实际上却是个码农!")
}
}
代码输出:
说出程序员的一个明显特征:高富帅 //高富帅为我们输入的内容
你可能说错了,程序员的理想是改变世界的人,实际上却是个码农!
代码解析
如上代码,当switch的表达式无法匹配case中的表达式,那么将自动匹配default的内容,如果匹配,则会忽略default的内容。
switch的默认值
当switch的expression没有写,则默认匹配true的值,实例如下:
package main
import (
"fmt"
)
func main() {
switch {
case false:
fmt.Println("This is false")
case true:
fmt.Println("This is true")
default:
fmt.Println("This is default")
}
}
代码输出:
This is true
fallthrough强制执行case代码
通常情况下,我们可以通过fallthrough的关键词,来强制执行匹配的case的后面的代码,如下实例:
package main
import (
"fmt"
)
func main() {
switch false {
case false:
fmt.Println("This is false")
fallthrough
case true:
fmt.Println("This is true")
fallthrough
default:
fmt.Println("This is default")
}
}
代码输出:
This is false
This is true
This is default