GO语言延迟函数defer怎么使用

发布时间:2023-05-10 15:09:58 作者:iii
来源:亿速云 阅读:141

今天小编给大家分享一下GO语言延迟函数defer怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

go语言中defer最主要的目的是在函数执行完毕后及时的释放资源

入门案例

package main

import "fmt"

func sum(n1 int, n2 int) int {
	//当执行到defer时,会将defer后面的语句压入到独立的栈中(我们取名为defer栈吧)
	//当函数执行完毕后,再从defer栈,先进后出的方式出栈然后执行
	defer fmt.Println("ok1 n1=",n1) // 3. n1
	defer fmt.Println("ok2 n2=",n2) //2. n2
	res := n1 + n2 //res = 30,首先执行
	fmt.Println("ok3 res=",res) // 1. res = n1 + n2
	return res
}

func main(){
	res := sum(10,20)
	fmt.Println("main res=",res)
}

GO语言延迟函数defer怎么使用

main方法调用sum函数

代码执行到第一个defer后,编译器(系统)会将第一个defer这段压入到defer的栈中(暂时不执行)

注意事项

package main

import "fmt"

func sum(n1 int, n2 int) int {
	//当执行到defer时,会将defer后面的语句压入到独立的栈中(我们取名为defer栈吧)
	//当函数执行完毕后,再从defer栈,先进后出的方式出栈然后执行
	defer fmt.Println("ok1 n1=",n1) //n1 = 10
	defer fmt.Println("ok2 n2=",n2) //n2 = 20
	n1++ //添加代码: n1++
	n2++ //添加代码: n2++
	res := n1 + n2
	fmt.Println("ok3 res=",res) //res = 32
	return res
}

func main(){
	res := sum(10,20)
	fmt.Println("main res=",res) //结果还是会被影响 res = 32
}

结果

GO语言延迟函数defer怎么使用

defer最佳实践

defer主要的价值是在当函数执行完毕后,可以及时释放函数创建的资源

//示意代码
func test(){
	//关闭文件资源
	file = openfile(文件名)
	defer file.close() 
	//其他代码
	//连接的数据库还是可以使用的
}
func test(){
	//释放数据库资源
	connect = openDatabase()
	defer connect.close()
	//其他代码
	//连接的数据库还是可以使用的
}

以上就是“GO语言延迟函数defer怎么使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

推荐阅读:
  1. Go语言中panic函数、recover函数以及defer语句怎么用
  2. go 延迟函数 defer

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

go语言 defer

上一篇:Vue全局注册中的kebab-case和PascalCase怎么使用

下一篇:vue中的process.env如何使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》