goto语句

一条goto语句可以无条件地转移到指定的标签语句上,for、switch 或 select 语句都可以配合标签(label)形式的标识符使用,即某一行第一个以冒号(:)结尾的单词。

标签的名称是大小写敏感的,为了提升可读性,一般建议使用全部大写字母.

  1. import "fmt"
  2. func main() {
  3. i := 0
  4. LABEL:
  5. fmt.Print(i)
  6. i++
  7. if i == 10 {
  8. return
  9. }
  10. goto LABEL
  11. }

pro05_5_1.go

输出结果:0123456789

我个人建议如果不是写底层的程序,尽量不要使用goto语句,使用goto语句会让你的程序易读性差。

还有一点需要注意一个块外的goto语句不能跳到块的内部.

  1. func main() {
  2. i := 0
  3. LABEL:
  4. fmt.Print(i)
  5. i++
  6. if i == 10 {
  7. L2:
  8. fmt.Println("ok")
  9. return
  10. }
  11. goto L2
  12. }

编译的时候会提示:goto L2 jumps into block starting at .\pro05_5_1.go:10

链接