go入门2 --- 控制流

对于go来讲控制流也就那么几个:

1.if 

这就是一个最简单的if判断,if 初始化语句,判断条件{}, else if, else 必须紧跟上面条件结束的花括号,不能另起一行

func main() {
if x := 10; x>1{
fmt.Println(x)
}else if x > 0{
    ...
  } else {
    ...
  }
}

go 不支持三元运算,这确实是一个比较可惜的地方

2.for循环

func main() {

    x := "i am good person"
    for i, n := 0, len(x); i < n; i++{  // len(x) 如果经常使用,尽量放到初始化语句中
        fmt.Println(x[i], i ,n)
    }

}

go 中没有while,直接使用for{}起个死循环就可以,想要打断,直接break

3.range

类似于迭代器的操作,搭配for循环使用

func main() {

    x := []string{"i", "am", "good", "person"}
    for index, v := range x{  // index如果用不到,可以使用  _
        fmt.Println(index, v)
    }
}

4.switch

分支表达式可以是任意的类型,默认会自动终止,不需要break,default是所有都找不到的情况下,执行,当然还有fallthrough,意味着我这个分支执行完毕,也会吧下一个分支执行,不会进行判断条件

func main() {
    var (
        x = []string{"a", "b"}
        y = "a"
    )
    switch y {
    case x[0]:
        fmt.Println("first")
    case x[1]:
        fmt.Println("two")
    default:
        fmt.Println("not found")
    }

}

4.goto

这个就是函数内跳转,大小写敏感,当 i > 10 就会执行 BREAK标签,如果标签使用了但是没有执行也会报错

func main() {
    var i int
    for {
        i ++
        if i >10 {goto BREAK}
    }
    BREAK:
        fmt.Println("over", i)
}

5.break, continue

当y大于3是就是从L2重新执行

当x大于2时就会打断L1,循环结束

func main() {
L1:
    for x := 0; x < 100; x++ {
    L2:
        for y := 0; y < 100; y++ {
            if y > 3 {
                continue L2
            }
            if x > 2 {
                break L1
            }
            fmt.Println(x, y)
        }
        fmt.Println()
    }

}
posted @ 2019-12-30 16:32  灬灬灬灬灬灬  阅读(609)  评论(0编辑  收藏  举报