Golang学习笔记(三):控制流

2019-11-10 10:06:07于丽

        ...
}

a := 1
switch {
    case a>=0:
        ....
    case a>1:
        ....
}

switch a:=1; {
    case a>=0:
        ...
    case a>1:
        ...
}

2.替代if...else if…else…

不指定switch 条件表达式(没有条件表达式,在case语句中有),或者直接为true

  a := 5
  switch {     //两句可合并位 switch a:=5; {
      case a > 1:
          println("a")
      case a > 2:
          println("b")
      default:
          println("c")
  }
 

goto break continue

均可配合标签使用(标签区分大小写,若声明了没有使用会导致编译错误)

break/continue可配合标签用于多重循环跳出
goto是调整执行位置,与其他两个执行结果并不相同

1.goto

支持函数内部goto跳转

请善用

必须跳转到当前函数内定义的标签,标签名大小写敏感

func myFunc() {
    i := 0
Here:
    println(i)
    i++
    goto Here
}

2.continue

进入下一次循环

3.break

终止循环

for index := 10; index > 0; index -- {
    if index == 5 {
        break //continue
    }
}

示例

package main
func main(){
    a := 1
    LABEL1:
        println("inc a=", a)
        a += 1

    LABEL2:
        //println("here")

    for ; a < 6; {
        println(a)
        if a == 3 {
            a += 1
            continue LABEL2
        }
        if a == 5 {
            break
        }
        goto LABEL1