golang 控制结构(1)
此为学习无闻大佬写的golang教程
1.if-else 结构
if condition1 { // do something } else if condition2 { // do something else }else { // catch-all or default }
基本和java一样,只是不用将条件用括号括起来, 但是左括号必须跟在条件后,不能单独一行,java则没有限制。
2.多返回值
这是golang的特性,java中多返回值,我们一般采用,对象或某种集合进行返回,特殊的如pair等。
Go 语言的函数经常使用两个返回值来表示执行是否成功:返回某个值以及 true 表示成功;返回零值(或 nil)和 false 表示失败。
也可以使用一个 error 类型的变量来代替作为第二个返回值:成功执行的话,error 的值为 nil,否则就会包含相应的错误信息(Go 语言中的错误类型为 error:var err error
)。
这样一来,就很明显需要用一个 if 语句来测试执行结果;由于其符号的原因,这样的形式又称之为 comma,ok 模式(pattern)。
f, err := os.Open(name) if err != nil { return err } doSomething(f) // 当没有错误发生时,文件对象被传入到某个函数中 doSomething
3 switch
Go 语言中的 switch 结构使用上更加灵活。它接受任意形式的表达式:
switch var1 { case val1: ... case val2: ... default: ... }
变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。前花括号{
必须和 switch 关键字在同一行。
可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3
。
每一个case
分支都是唯一的,从上至下逐一测试,直到匹配为止。( Go 语言使用快速的查找算法来测试 switch 条件与 case 分支的匹配情况,直到算法匹配到某个 case 或者进入 default 条件为止。)
一旦成功地匹配到某个分支,在执行完相应代码后就会退出整个 switch 代码块,也就是说您不需要特别使用break
语句来表示结束。
如果在执行完每个分支的代码后,还希望继续执行后续分支的代码,可以使用fallthrough
关键字来达到目的。
switch i {
case 0: fallthrough
case 1:
f() // 当 i == 0 时函数也会被调用
}