Go 语言中有 goto 这个功能,这个功能会影响代码的可读性, 会让代码结构看起来比较乱。
Go语言也支持label(标签)语法:分别是break label和 goto label 、continue label
break
break 一般用来跳出当前所在的循环, 但是我们有业务场景,需要使用到 跳出最外层循环怎么办?break label 跳出循环不再执行for循环里的代码。
label一般用于跳出多层循环
break标签只能用于for循环,不能和switch使用,在其他语言里switch与break是搭档
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)
}