Golang 在defer函数中获取return的返回值

在工作中用到在defer中根据return的error来进行业务逻辑处理。

注意事项:

 1.声明err必须在defer函数之前。

 2. defer函数传参必须使用引用传递,否则无效。

代码如下:

func testFun() error {
	var err error
	defer func(err *error) {
		fmt.Println(err)
	}(&err)

	num, err := strconv.Atoi("10")
	fmt.Println(num)
	num, err = strconv.Atoi("200")
	fmt.Println(num)
	num, err = strconv.Atoi("300")
	fmt.Println(num)
	return err
}