【Go】21、golang流程控制关键字break

  • break语句可以结束for、switch和select的代码块
1、go语言中使用break注意事项
  • 单独在select中使用break和不使用break没有啥区别
  • 单独在表达式switch语句,并且没有fallthrough,使用break和不使用break没有啥区别
  • 单独在表达式switch语句,并且有fallthrough,使用break能够终止fallthrough后面的case语句的执行
  • 带标签的break,可以跳出多层select/switch作用域。让break更加灵活,写法更加简单灵活,不需要使用控制变量一层一层跳出循环,没有带break的只能跳出当前语句中
  • break的跳转标签(label)必须放在循环语句for前面,并且在break label跳出循环不再执行for循环里的代码break 可以用来跳出 for ,switch 或 select 语句
  • 标签必须放在for、switch、select前面并且不能有其他的变量或者其他的存在,不然就报错
label_name(自定义):
	for;switch;select
# label和它们三个必须紧挨着
2、go语言break关键字实例
  • 跳出for循环
func f1() {
	for i := 0; i < 10; i++ {
		fmt.Printf("i: %v\n", i)
		if i == 5 {
			break // 退出整个循环
		}

	}
}
func main() {
	f1()
}
  • 跳出switch
func f2() {
	i := 2
	switch i {
	case 1:
		fmt.Println("1")
	case 2:
		fmt.Println("2")
		break
		fallthrough
	case 3:
		fmt.Println("3")
	}
}
func main() {
	f2()
}
# 在case2中无法不加break输出结果是2,3;添加break后,阻止fallthrough穿透,只输出2
  • 跳出标签
func f3() {
// 标签
MYLABEL:

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

func main() {
	f3()
}
  • 跳出标签2
func f4() {
	// 标签1
label1:
	for i := 0; i < 3; i++ {
	label2:
		for j := 0; j < 5; j++ {
			fmt.Printf("j: %v\n", j)
			if j > 3 {
				break label2
			}
		}
		fmt.Printf("i: %v\n", i)
		if i == 2 {
			break label1
		}
	}
}

func main() {
	f4()
}
  • 跳出标签3,这么用错误的;标签有就近原则
func f5() {
	// 定义标签
label1:
	for i := 0; i < 2; i++ {
		fmt.Printf("i: %v\n", i)
	}
	for j := 0; j < 2; j++ {
		break label1
	}
}

func main() {
	f5()
}
  • 跳出标签4,跳出整个循环;跳出的不仅仅是for循环,而是这个循环
func f6() {
	i := 2
label1:
	switch i {
	case 1:
		fmt.Println("1")
	case 2:
		for j := 0; j <= 2; j++ {
			fmt.Printf("j: %v\n", j)
			break label1
		}
		fmt.Println("2")
	case 3:
		fmt.Println("3")
	}
	fmt.Println("ending")
}

func main() {
	f6()
}
# 输出结果
    j: 0
    ending
  • break 可以在 for,switch 或 select 语句中的任何地方退出并切换到指定 Label
posted @   郭祺迦  阅读(318)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示