文章目录
- 条件语句
- “if“条件语句
- “switch“条件语句
- “for“循环
- “goto“语句
条件语句
Go
的条件语句和其它语言类似,主要是不支持三目运算符所以
?:
这种条件判断是不支持的。
Go
提供的条件判断语句主要有
if
还有
switch
这两种形式下面是
if
条件语句
if
的几种写法,基本上和其它语言是一致的
if 条件 {} else {}if 条件 {} else if 条件 {} else {}
switch
条件语句
switch
和其它语言类似,都是类似下面的写法:
switch var1 {case val1:...case val2:...default:...}
有几点差异的地方是,默认不需要
break
,
case
被匹配上了之后,就会进入分支,后面的
case
都不会匹配和执行。但是
fallthrough
可以强制执行下一条
case
,例如下面的代码:
package mainfunc main() {var a bool = trueswitch a {case true:println(\"case true 1\")fallthroughcase false:println(\"case false 2\")case true:println(\"case true 3\")}}
输出为:
case true 1case false 2
case
后面可以是任何类型的变量,常量,或者表达式,但是
case
之间的类型必须保存一致。
循环语句
Go
是没有
while
的,它提供了两种可以进行循环的操作
for
和
goto
。
for
循环
for
的操作主要如下:
for 初始化;条件;执行 {}for 条件 {}for {} //无限循环,可以通过break跳出
for
可以通过
continue
执行下条循环,也可以
break
跳出循环。和其它语言
for
还有一个差异就是
for range
可以对
数组 Slice Map
进行遍历:
package mainfunc main() {a := [...]int{1, 2, 3}for i, v := range a {println(i, v)}}//输出0 11 22 3
这里
i
等于值
v
在数组中的下标。
goto
语句
Go
把
goto
保留了下来,它不仅仅用于循环,可以跳转到一段有标签的代码块
goto label
。
下面是一个简单的使用:
package mainfunc main() {var a int = 0loop:if a < 5 {a++println(a)goto loop}}
输出:
12345
goto
是一个比较有争议的操作,反对使用它的人认为它会让代码逻辑变得复杂,代码的可读性降低。支持的人认为它可以使用灵活,更加容易扩展,比如出现了异常或者需要统一处理逻辑,可以用
goto
直接进行跳转。