go语言开发基础13 - 之go语言里的流控制之goto、break、continue
一、break
break语句可以结束for、switch和select的代码块。
break语句还可以在语句后面添加标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的for、switch和 select的代码块上。 举个例子:
func breakDemo1() {
BREAKDEMO1:
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 2 {
break BREAKDEMO1 // 满足条件时跳转到 BREAKDEMO1 标签的位置
}
fmt.Printf("%v-%v\n", i, j)
}
}
fmt.Println("...")
}
二、goto
goto语句通过标签进行代码间的无条件跳转。goto语句可以在快速跳出循环、避免重复退出上有一定的帮助。Go语言中使用goto语句能简化一些代码的实现过程。 例如双层嵌套的for循环要退出时:
一、使用break的代码实现
func gotoDemo1() {
var breakFlag bool
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 2 {
// 设置退出标签
breakFlag = true
break
}
fmt.Printf("%v-%v\n", i, j)
}
// 外层for循环判断
if breakFlag {
break
}
}
}
二、使用goto简化代码
func gotoDemo2() {
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 2 {
// 设置退出标签
goto breakTag
}
fmt.Printf("%v-%v\n", i, j)
}
}
return
// 标签
breakTag:
fmt.Println("结束for循环")
}
三、continue:退出当前循环进入下一循环
continue语句可以结束当前循环,开始下一次的循环迭代过程,仅限在for循环内使用。
在 continue语句后添加标签时,表示开始标签对应的循环。例如:
func continueDemo() {
forloop1:
for i := 0; i < 5; i++ {
// forloop2:
for j := 0; j < 5; j++ {
if i == 2 && j == 2 {
continue forloop1 // 跳转到 forloop1 标签的循环。
}
fmt.Printf("%v-%v\n", i, j)
}
}
}
四、猜数字练习
func inputDemo() {
var n int
n = rand.Intn(100) // 获取一百以内的随机数
for {
var input int
fmt.Scanf("%d\n", &input) // 将用户输入的内容赋值给input的内存地址
flag := false
switch {
case input == n: // 如果用户输入的内容等于随机数
fmt.Println("you are right")
flag = true // 猜对了,退出循环
case input > n: // 用户输入大于随机数
fmt.Println("Bigger")
case input < n: // 用户输入小于随机数
fmt.Println("lass")
}
if flag {
break
}
}
}

浙公网安备 33010602011771号