golang学习之路-14goto方法自定义跳转

package main

import "fmt"

func main() {
	//go传统方式退出多层循环
	var breakAgain bool

	//外层循环
	for x:=0;x<10 ;x++  {
		println("外层")
		//内层循环
		for y:=0;y<10 ;y++  {
			//当满足某个条件时
			if y==2 {
				println("。。。")
				//设置退出标记
				breakAgain = true
				//退出本次循环
				break
			}
		}
		//根据标记,继续退出循环
		if breakAgain{
			break
		}
	}

	println("执行完毕--------")

	//优化代码使用goto
	//外层循环
	for x:=0;x<10 ;x++  {
		println("外层")
		//内层循环
		for y:=0;y<10 ;y++  {
			//当满足某个条件时
			println("。。。")
			if y==2 {
				println("2")
				//设置退出标记
				goto breakHere
			}
		}
	}
	//手动返回,避免进入标签
	return//只能被goto使用,不影响代码执行流程,此处如果不手动返回,在不满足条件时,也会执行24行

	//定义返回标签
	breakHere:
		println("123")
	//多处错误处理存在代码重复时是非常棘手的

	err :=firstCheckError()//执行某个逻辑,返回错误
	if err!=nil {//如果发生错误,打印错误
		fmt.Printf(err)
		exitProcess()
		return
	}

	err = secondCheckError()

	if err !=nil{
		fmt.Println(err)
		exitProcess()
		return
	}


	//go语言实现同样的逻辑
	err =firstCheckError()
	if err!=nil{
		goto onExit //跳转到onexit
	}
	err = secondCheckError()
	if err != nil {
		goto onExit//跳转onexit
	}
	fmt.Println("Done")

	return
	onExit:
		fmt.Printf(err)//汇总所有流程进行错误打印并退出进程
		exitProcess()
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学渣王菜菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值