04.6 switch语句
在本节介绍switch语句主要是因为switch可以用于正则表达式!首先看一段switch代码块:
switch asString { case "1": fmt.Println("One") case "0": fmt.Println("Zero") default: fmt.Println("Do not care!") }
这段代码能够区分不同的asString值所对应的不同操作。
switch代码块设置default子句是非常棒的实践。由于switch的case语句是依赖顺序的,所以default子句总是在最后声明。
switch的使用还可以更加灵活:
switch {
case number < 0:
fmt.Println("Less than zero")
case number > 0:
fmt.Println("Bigger than zero")
default:
fmt.Println("zero")
}
上面的代码块能够在某个数字正数、负数、以及0的情况下执行不同的任务。如你所见,switch的分支语句可以是条件语句,那么其分支语句同样也可以是正则表达式!
关于switch的用法将在switch.go中分5部分展示。
第一部分:
regex包用于生成正则表达。
第二部分代码:
第三部分代码:
这部分代码说明case子句可以包含硬编码的变量,这种情况通常是switch`后跟有一个变量。
第四部分代码:
这部分代码十分有趣。首先,我们定义了3个正则表达negative,floatingPoint,以及mail。然后使用regexp.MatchString()在switch中匹配不同的情况。
最后,fallthrough关键字告诉Go执行接下来的分支,即default分支。这意味着无论mail.MatchString(asString)是否成功匹配,default子句都会执行。
最后一部分:
这段代码说明switch能够区分不同类型,你将在第7章中了解到接口的知识。执行switch.go将会产生如下输出:
Last updated
Was this helpful?