Skip to content

1.golang流程控制关键字break

break语句可以结束forswitchselect的代码块

break结束当前整个循环

break注意事项

1.单独在select中使用break和不使用break没有啥区别

2.单独在表达式switch语句,并且没有fallthough,使用break和不使用break没有啥区别

3.单独在表达式swithch语句,并且有fallthough,使用break能够终止fallthough后面的case语句的执行

4.带标签的break,可以跳出多层select/switch作用域。使用break更加灵活,写法更加简单灵活,不需要使用控制变量一层一层跳出循环,没有带break的只能跳出当前语句块

go
func breakFunc() {
	//跳出for循环
	for i := 1; i <= 10; i++ {
		if i == 5 {
			break //退出循环
		}
		fmt.Printf("i=%v\n", i)
	}
}
func breakFunc() {
	//跳出for循环
	for i := 1; i <= 10; i++ {
		if i == 5 {
			break //退出循环
		}
		fmt.Printf("i=%v\n", i)
	}
}
go
func switchBreakFunc() {
	i := 2
	switch i {
	case 1:
		fmt.Printf("1")
		break
	case 2:
		fmt.Printf("2")
		break //使fallthrough失效
		fallthrough
	case 3:
		fmt.Printf("3")
		break

	}
}
func switchBreakFunc() {
	i := 2
	switch i {
	case 1:
		fmt.Printf("1")
		break
	case 2:
		fmt.Printf("2")
		break //使fallthrough失效
		fallthrough
	case 3:
		fmt.Printf("3")
		break

	}
}
go
func LableFunc() {
MYLABEL:
	for i := 0; i < 10; i++ {
		fmt.Printf("i:%v\n", i)
		if i == 5 {
			break MYLABEL
		}
	}
	fmt.Printf("end....")
}
func LableFunc() {
MYLABEL:
	for i := 0; i < 10; i++ {
		fmt.Printf("i:%v\n", i)
		if i == 5 {
			break MYLABEL
		}
	}
	fmt.Printf("end....")
}

2.golang关键字contiune

continue只能在循环中,在go中只能在for循环中,它可以终止本次循环,进行下一次循环

continue语句后添加标签时,表示开始标签对应的循环

continue结束当次循环

go
func forContinue() {
	for i := 1; i < 10; i++ {
		if i%2 == 0 {
			fmt.Printf("i:%v\n", i)
		} else {
			continue
		}

	}
}
func forContinue() {
	for i := 1; i < 10; i++ {
		if i%2 == 0 {
			fmt.Printf("i:%v\n", i)
		} else {
			continue
		}

	}
}
go
func continueMylabelFunc() {
	for i := 0; i < 10; i++ {
	MYLABEL:
		for j := 0; j < 10; j++ {
			if i == 2 && j == 2 {
				continue MYLABEL
			}
			fmt.Printf("%v,%v\n", i, j)
		}

	}
}
func continueMylabelFunc() {
	for i := 0; i < 10; i++ {
	MYLABEL:
		for j := 0; j < 10; j++ {
			if i == 2 && j == 2 {
				continue MYLABEL
			}
			fmt.Printf("%v,%v\n", i, j)
		}

	}
}

continue执行到就会跳过本次执行,继续循环

break执行到后就会跳出循环

3.关键字goto

goto语句通过标签进行代码的无条件跳转goto语句可以在快速跳出循环、避免重复退出上有一定的帮助。

Go语言中使用goto语句能简化一些代码的实现过程。例如双层嵌套的for循环要退出时:

go
func gotoFunc() {
	i := 1
	if i > 2 {
		fmt.Printf("2")
	} else {
		goto END
	}
END:
	fmt.Printf("end...")
}
func gotoFunc() {
	i := 1
	if i > 2 {
		fmt.Printf("2")
	} else {
		goto END
	}
END:
	fmt.Printf("end...")
}
go
func forGotoFunc() {
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if i >= 2 && j <= 2 {
				goto END
			}
		}
	}
END:
	fmt.Printf("end...")
}
func forGotoFunc() {
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if i >= 2 && j <= 2 {
				goto END
			}
		}
	}
END:
	fmt.Printf("end...")
}