Go的第五课——控制语句的关键字使用
今天属实是摆了,主要是玩了有点久 + 补 CSAPP 的知识,所以也就补了一点点知识点。
一些关键字
fallthrough
原来 switch 可以下滑,只需要在最后使用关键字 fallthrough
即可,并且只能在 case 当中的最后一行使用,其余地方使用均会报错。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package main
import "fmt"
func main() { c := 1 switch c { case 1: fmt.Println(1) fallthrough case 2: fmt.Println(2) default: fmt.Println(0) } }
|
break
它的一般用途和 C 语言是差不多的,跳出当前循环或者是跳出当前的 case。
主要有一个 break label
的写法指定跳出哪一重的循环。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| package main
import "fmt"
func main() { var i, j int label1: for i = 0; i < 10; i++ { label2: for j = 0; j < 10; j++ { if i == 5 { fmt.Println("END") break label1 } if j == 5 { fmt.Println() break label2 } fmt.Printf("%d ", j) } } fmt.Print(i, j) }
|
continue
提前结束本次循环,它也有一个 continue label
的写法,和 break 差不多,指明是提前结束哪个循环。
goto
也是跟 C 语言差不多,不过感觉跟汇编语言的 jmp 也有一点相似,它以标签为单位跳转。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| package main
import "fmt"
func main() {
var i, j int label1: for i = 0; i < 10; i++ {
for j = 0; j < 10; j++ { if i == 5 { fmt.Println("END") break label1 } if j == 5 { fmt.Println() goto label2 } fmt.Printf("%d ", j) } } label2: fmt.Print(i, j) }
|