go label标签与goto
Go 语言中有 goto  这个功能,这个功能会影响代码的可读性, 会让代码结构看起来比较乱。 Go语言也支持label(标签)语法:分别是break label和 goto label 、cont
go label标签与goto
发布时间:2023-10-06 (2023-10-06)

Go 语言中有 goto  这个功能,这个功能会影响代码的可读性, 会让代码结构看起来比较乱。

Go语言也支持label(标签)语法:分别是break labelgoto labelcontinue label

break

break 一般用来跳出当前所在的循环, 但是我们有业务场景,需要使用到 跳出最外层循环怎么办?break label 跳出循环不再执行for循环里的代码。

label一般用于跳出多层循环

break标签只能用于for循环,不能和switch使用,在其他语言里switchbreak是搭档

func main() {

label:
  for i := 1; i <= 10; i++ {
    for j := 1; j <= 5; j++ {
      if i == 8 && j == 4 {
        break label
      }
      fmt.Print("+")
    }
    fmt.Print("\n")
  }
}

continue

continue label 这个功能和 break 优点类似,区别在于  break 是强制终止, continue 是继续循环下一个迭代。

goto

goto 可以无条件的跳转执行的位置,但是不能跨函数,需要配合标签使用。

goto 标签放上面,下面都可以的.

用goto实现循环

var name string
start:
  fmt.Println("请输入你的名字:")

  fmt.Scanln(&name)

  if name != "fengfeng" {
    fmt.Println("名字输入错误!")
    goto start
  }
  fmt.Println("名字输入正确!")

不建议使用,容易造成逻辑混乱

func main() {
  fmt.Println(1)
  if i := 1; i == 1 {
    goto four
  }
  fmt.Println(2)
  fmt.Println(3)
four:
  fmt.Println(4)
}