Golang \\学习笔记 流程控制

golang cyanprobe 9年前 (2016-07-21) 3458次浏览 已收录 0个评论

前言:

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


CyanProbe , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Golang \\学习笔记 流程控制
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址