前言:
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的函数这一块了,函数和错误处理一起了吧,增加些篇章,还有进度。
