if else条件语句
本节介绍Golang中的条件语句if else
。if
语句的语法如下:
condition
条件满足时执行大括号中的代码块。Golang比JavaScript
等语言更严格,即使大括号中仅有一条语句,大括号也不能省略。
跟大多数编程语言类似,Golangif
条件语句也支持else if
和else
:
当然,else if
语句可以存在多个。
当if
和else if
任何一个条件判断通过时,执行对应的代码块得,否则就说明所有这些判断条件都不通过,那么就执行else
对应的代码块。
我们写一个程序来判断一个数字是奇数还是偶数。
Go Playground在线运行 这里的if num % 2 == 0
语句判断num
对2求模的余数是否是0。如果是,那么就打印"the number is even",否则就打印"the number is odd"。由于这里num
赋值为10,是偶数,因此这段程序会打印the number is even
。
Golang中的if
有个变体,可以在判断条件condition
之前加一个语句,语法如下:
我们用这种写法重构下前面的程序。
Go Playground在线运行 这种写法的不同点在于,num
变量初始化是在if
语句内完成的,因此num
变量的作用域也仅限与if
语句(当然也包括else
)内,因此也就无法在该if else
语句外访问num
变量。
我们现在写一个程序来体验下else if
的用法。
Go Playground在线运行 这里由于num
初始化赋值为99
,因此num >= 51 && num <= 100
条件判断通过,因此打印输出number is between 51 and 100
。
防坑指南
Golang中条件语句的else
不能另起一行,必须跟在}
符号后面,否则编译会报错。
Go Playground在线运行 这段代码里else
子句没有紧跟在}
符号后面,而是另起新的一行,因此会报错:
为什么会这样呢?原因是因为Golang会在位于行尾的}
符号后面自动补一个分号,具体可以参考这里:https://golang.org/ref/spec#Semicolons。
这时我们的代码会变成:
由于if else
一个完整的语句,在中间插入了;
当然报错了。起初可能不太习惯,不过换个角度看,这一点反倒使得Golang的语法更加严格,要求大家写的代码也更加一致。
Last updated
Was this helpful?