前言:
GO语言的流程控制光是省略小括号就够我瞎眼的了,流程控制是一个程序的股价所以说很重要,可以灵活组合面对复杂的流程。
正文:
基本的 for 循环除了没有了 `( )` 之外(甚至强制不能使用它们),看起来跟 C 或者 Java 中做的一样,而 `{ }` 是必须的。注意for是GO中唯一的循环控制,这说明while的功能也要用for来实现。
如果省略了条件就会形成死循环,
if可以定义一个短小的变量(俗称便捷语句)只能在块作用域有效
在switch语句中除非以fallthrough结束,否则自动不向下运行。没有条件的 switch 同 `switch true` 一样。
package main import ( "fmt" "runtime" ) func main() { fmt.Print("Go runs on ") switch os := runtime.GOOS; os { case "darwin": fmt.Println("OS X.") case "linux": fmt.Println("Linux.") default: // freebsd, openbsd, // plan9, windows... fmt.Printf("%s.", os) } }
defer 语句会延迟函数的执行直到上层函数返回。延迟调用的参数会立刻生成,但是在上层函数返回前函数都不会被调用。好神奇 = =;可以用于在最后释放某一资源。
//返回hello world package main import "fmt" func main() { defer fmt.Println("world") fmt.Println("hello") }
延迟的函数调用被压入一个栈中。当函数返回时, 会按照后进先出的顺序调用被延迟的函数调用。
package main import "fmt" //此程序返回 counting 9 8 7 6 5 4 3 2 1 0 done func main() { fmt.Println("counting") for i := 0; i < 10; i++ { defer fmt.Println(i) } fmt.Println("done") }
另外GO语言支持跳转语句也就是goto
package main import "fmt" //返回 0123456789 func main() { i := 0 this: fmt.Print(i) i++ for i < 10 { goto this } }
后记:
流程控制已经折腾完,接下来要看Go的函数这一块了,函数和错误处理一起了吧,增加些篇章,还有进度。