Go语言逻辑语句的那些事儿!
Go语言逻辑语句的那些事儿!
月伴飞鱼if条件语句
if
语句是条件语句
- 它根据布尔值的表达式来决定选择哪个分支执行
如果表达式的值为 true
- 则 if 分支被执行
如果表达式的值为 false
- 则 else 分支被执行。
1 | func main() { |
关于 if 条件语句的使用有一些规则:
if 后面的条件表达式不需要使用 ()
- 这和有些编程语言不一样,也更体现 Go 语言的简洁
每个条件分支(if 或者 else)中的大括号是必须的
- 哪怕大括号里只有一行代码
if 紧跟的大括号 { 不能独占一行,else 前的大括号 } 也不能独占一行
- 否则会编译不通过
在
if……else
条件语句中还可以增加多个else if
,增加更多的条件分支。
1 | func main() { |
和其他编程语言不同,在 Go 语言的 if 语句中,可以有一个简单的表达式语句
- 并将该语句和条件语句使用分号
;
分开
1 | func main() { |
在 if 关键字之后,i>10 条件语句之前
- 通过分号
;
分隔被初始化的 i:=6。这个简单语句主要用来在 if 条件判断之前做一些初始化工作
- 可以发现输出结果是一样的。
switch选择语句
1 | switch i:=6;{ |
switch 语句同样也可以用一个简单的语句来做初始化
- 同样也是用分号
;
分隔。每一个 case 就是一个分支,分支条件为 true 该分支才会执行
- 而且 case 分支后的条件表达式也不用小括号 () 包裹。
在 Go 语言中,switch 的 case 从上到下逐一进行判断:
一旦满足条件,立即执行对应的分支并返回,其余分支不再做判断。
也就是说 Go 语言的 switch 在默认情况下,case 最后自带 break。
这和其他编程语言不一样
- 比如 C 语言在 case 分支里必须要有明确的 break 才能退出一个 case。
Go 语言的这种设计就是为了防止忘记写
break
时,下一个 case 被执行。
那么如果有需要,的确需要执行下一个紧跟的 case 怎么办呢?
Go 语言提供了
fallthrough
关键字。现在看个例子,如下面的代码所示:
1 | switch j:=1;j { |
以上示例运行会输出 1,如果省略 case 1
- 后面的
fallthrough
,则不会有任何输出。
当 switch 之后有表达式时,case 后的值就要和这个表达式的结果类型相同:
比如这里的 j 是 int 类型,那么 case 后就只能使用 int 类型
- 如示例中的 case 1、case 2。
如果是其他类型,比如使用
case a
,会提示类型不匹配,无法编译通过。
而对于 switch 后省略表达式的情况:
整个 switch 结构就和
if……else
条件语句等同了。switch 后的表达式也没有太多限制,是一个合法的表达式即可
- 也不用一定要求是常量或者整数。
你甚至可以像如下代码一样,直接把比较表达式放在
switch
之后
1 | switch 2>1 { |
for循环语句
1 | sum:=0 |
其中:
第一部分是一个简单语句,一般用于 for 循环的初始化
- 比如这里声明了一个变量,并对
i:=1
初始化第二部分是 for 循环的条件,也就是说,它表示 for 循环什么时候结束。
- 这里的条件是 i<=100
第三部分是更新语句,一般用于更新循环的变量
- 比如这里 i++,这样才能达到递增循环的目的。
1 | sum:=0 |
这个示例和上面的 for 示例的效果是一样的,但是这里的 for 后只有
i<=100
这一个条件语句
- 也就是说,它达到了
while
的效果。在 Go 语言中,同样支持使用 continue、break 控制 for 循环:
continue 可以跳出本次循环,继续执行下一个循环。
break 可以跳出整个 for 循环
- 哪怕
for
循环没有执行完,也会强制终止。
1 | sum:=0 |