一、goto语句

goto:可以无条件地转移到过程中指定的行。

语法结构:

goto label;
..
..
label: statement;

package main

import "fmt"

func main() {
   /* 定义局部变量 */
   var a int = 10

   /* 循环 */
   LOOP: for a < 20 {
      if a == 15 {
         /* 跳过迭代 */
         a = a + 1
         goto LOOP
      }
      fmt.Printf("a的值为 : %d\n", a)
      a++     
   }  
}

统一错误处理
多处错误处理存在代码重复时是非常棘手的,例如:

        err := firstCheckError()
    if err != nil {
        goto onExit
    }
    err = secondCheckError()
    if err != nil {
        goto onExit
    }
    fmt.Println("done")
    return
onExit:
    fmt.Println(err)
    exitProcess()



示例

package main

import "fmt"

func main() {
    /*
    goto语句:

     */

    var a = 10
LOOP:
    for a < 20 {
        if a == 15 {
            a += 1
            goto LOOP
        }
        fmt.Printf("a的值为:%d\n", a)
        a++
    }

    fmt.Println("----------------")
    for i := 0; i < 10; i++ {
        for j := 0; j < 10; j++ {
            if j == 2 {
                goto breakHere
            }
        }
    }
    //手动返回,避免执行进入标签。。
    return

breakHere:
    fmt.Println("done...")
}

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。