一文熟悉 Go 的分支结构 (if - else-if - else、switch)
哈喽大家好,我是陈明勇,今天分享的知识是 Go 的分支结构。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!
耐心和持久胜过激烈和狂热。
分支结构
分支结构是结构化程序设计中的基础。针对分支结构,Go 提供了两种语句形式,一种是 if
,另一种是 switch
。
if
if
语句是 Go 中最常用、最简单的分支控制结构,它分为单分支、双分支以及多分支三种用法。if
语句会根据布尔变量或布尔表达式,在两个或多个分支中选择一个执行。以下为 if
语句的形式:
如果布尔变量或布尔表达式为 true
,则进入新分支执行,否则会继续按照原分支的代码去执行。
单分支 if
单分支的用法,如果布尔表达式成立,则执行新分支的代码,然后继续执行原分支的代码,否则执行原分支的代码,下面是代码示例:
打印结果
因为 num > 2
因此,程序运行之后,会执行新分支的打印语句以及原分支的打印语句。除了单个布尔表达式以外,还可以加入 &&
或 ||
条件运算符进行条件的组合,例如:
双分支 if-else
双分支结构,if
配合 else
关键字实现。如果表达式为 true
,执行 分支1
,否则执行 分支2
,然后继续执行 原分支
。下面是代码示例:
执行结果:
age
的值为 18
,因此会执行第一个分支的里打印语句,然后继续执行原分支的打印语句。
多分支 if - else if - else
多分支需要在 if
和 else
的形式上,加上 else if
进行实现。如果 if
后面的布尔表达式不成立,则会判断 else if
后面的布尔表达式,然后进行分支的选择,下面是代码示例:
执行结果:
程序根据布尔表达式条件的值,选择了第二个分支去执行代码。
在 if 语句中声明变量
在 if
语句中,布尔表达式之前声明变量是 Go
语言的惯用法,这种使用方式可以提高代码的可读性。由于是在 if
语句中声明的变量,因此变量的作用域也只在 if 语句中,外部无法访问这些变量。下面是示例:
在 if
语句中定义 name,ok
变量,使用 ok
判断 key
是否存在,如果存在则执行分支里的代码。
switch
基本用法:
T
可以是常量、变量和布尔表达式等,case
关键字后面的 value
类型,必须与 T
的类型是一致的,且 value
是唯一的。Go
会根据 T
的值与各个 case
后面的 value
进行匹配,匹配成功则执行对应 case
分支,case
后面可以有多个 value
。default 为默认分支,可有可无,如果前面的 case
都没匹配上,则会执行 default
分支。
示例
上面的代码,可以使用 switch
分支改造:
执行结果:
name
等于 小明
,与第一个 case
分支匹配成功,执行这个分支的代码,然后继续执行原分支的代码。
switch 分支当 if 分支使用
当 switch
分支后面不带常量、变量或布尔表达式等时,其效果与 if
分支类似。
当 switch
后面什么都没有时,程序会根据 case
后面布尔表达式的值进行分支的选择。
在 switch 语句中声明变量
和 if
一样,我们也可以在 switch
语句中声明变量,变量的作用域也只在 swtich
语句中,外部无法访问这些变量。
fallthrough
Go
语言中,不同于其他语言,switch
块内,每个 case
无需声明 break
来终止。如果我们想执行多个 case
分支,可以使用 fallthrough
关键字来实现。
执行结果:
在第一个 case
分支后面使用了 fallthrough
,不论下一个 case
是否与 cmy
匹配,都会执行这个分支的代码。
小结
本文对两种分支结构(if
、switch
)进行了介绍,也举例说明了一些特殊的用法。如果代码存在着复杂的 if
多分支结构,不妨用 swtich 进行改造,也许代码的可读性会更高。
版权声明: 本文为 InfoQ 作者【陈明勇】的原创文章。
原文链接:【http://xie.infoq.cn/article/010bf58298a92f1415dd8b1c5】。文章转载请联系作者。
评论