精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品原创,禁止全文或局部转载,禁止任何形式的非法使用,侵权必究
初学者理解了if else形式的语句,就好理解go的switch语句,go分支语句就是为了解决多个if else形成的大块不直观代码问题。
下面举一个简单的分支语句的例子:
switch coinflip() {
case "heads":
heads++
case "tails":
tails++
default:
fmt.Println("landed on edge!")
}
翻转硬币,coinflip函数返回不同的结果,每一个case语句对应一种返回结果。我们可以看到,每一个case语句后并没有显示地写break语句,这是因为在GO语言中,执行过case语句后程序会自动跳出。这里的switch后跟了一个coinflip函数作为操作对象,switch语句后也可以不跟操作对象。不带操作对象时,默认用true值来代替,再将后面分支的表达式来与true值进行比较。此外,还可以像if 多else语句那样直接把各个条件罗列出来,比如:
func Signum(x int) int {
switch {
case x > 0:
return +1
default:
return 0
case x < 0:
return -1
}
}
这种形式被称为tag switch(tagless switch),等价于switch true。
switch语句类似于for、if语句,后面也可以跟上简短的变量声明,自增表达式、赋值语句或者是函数。
break语句和continue语句可以改变控制流。类似于其他语言,break的作用是中断循环,使程序执行循环后面的部分;continue的作用是跳出当前循环,开始执行下一次循环。在GO语言中,这两种语句可以用于for、switch以及select语句中。
switch语句对初学者来说,不能当成普通的逐行下行执行流,也不能当成所有都执行,switch只是择一而执行,当然择的逻辑可以完善,会有变化,但是选择一个来执行是重点。