最近在看go语言,虽然网上大多数的评论都是在吐槽go语言,但是我喜欢简单的东西,我不拿它和任何语言去比,去用每一种语言完全是自己兴趣问题。
还没开始就跑题了 ~~!回到标题上来,golang的流程控制,刚开始学go,记性一直都不怎么好,做个笔记
流程控制包含三大类:条件判断、循环控制和无条件跳转。
if
go语言的if
package main
import (
"fmt"
)
func main() {
if a := 8; a > 2 {
fmt.Println("a 比 10 大")
} else {
fmt.Println("a 比 10 小")
}
}
输出 a 比 2 大
if语句允许在if里面声明变量,但是这个变量的作用域只在该条件逻辑块内。
goto
package main
import (
"fmt"
)
func mygoto() {
i := 0
Here:
fmt.Println(i)
i++
goto Here //跳转到Here
}
func main() {
mygoto()
}
友情提示:如果你不小心看到这段代码最好还是别试了,听我的,没错
for循环
go语言里面最强大的一个控制逻辑 for,既可以用来循环读取数据,又可以当做while来控制逻辑,还能迭代操作,语法如下:
package main
import (
"fmt"
)
func main() {
a := 0
for index := 0; index < 10; index++ {
a += index
}
fmt.Println(a)
}
输出结果为 45
for可以代替while,忽略expression1 和 expression3
func main() {
a := 1
for a < 1000 {
a += a
}
fmt.Println(a)
}
循环中的两个关键操作,break和continue,break是跳出当前循环,continue是跳出本次循环
for a := 10; a > 0; a-- {
if a == 5 {
break //或者continue
}
fmt.Println(a)
}
//break打印出来为10,9 , 8 , 7 , 6
//continue打印出来为10,9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1
for配合range可以读取slice和map的数据
func main() {
a := [5]int{1, 2, 3, 4, 5}
for k, v := range a {
fmt.Println("key:", k)
fmt.Println("value:", v)
}
}
如果只想输出value而不想要key,像下面这么写编译会出错,因为go语言对于“声明而未被调用”的变量在编译阶段会报错,但是可以用“_”下划线来丢弃
func main() {
a := [5]int{1, 2, 3, 4, 5}
for k, v := range a {
fmt.Println("value:", v)
}
}
修改为
func main() {
a := [5]int{1, 2, 3, 4, 5}
for _, v := range a {
fmt.Println("value:", v)
}
}
switch
switch和许多语言中的用法一样,在if-else需要很多的时候可以用switch
func main() {
a := 4
switch a {
case 1:
fmt.Print("123")
case 2, 3, 4:
fmt.Print("456")
fallthrough
default:
fmt.Print("789")
}
}
上面程序输出结果为 456789
根本不用break结尾,go语言默认每个case最后都带有break
fallthrough用于强制执行下一个case语句
OK,The End!
发布于:
http://www.golune.com/blog/content/4b6fe6c324a8337ebe05679ed4c34fae8ec86
有疑问加站长微信联系(非本文作者)