iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >GO语言延迟函数defer怎么使用
  • 347
分享到

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

2023-07-05 17:07:25 347人浏览 泡泡鱼
摘要

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

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

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

入门案例

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

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

main方法调用sum函数

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

注意事项

  • 当ggo执行到一个defer时,不会立刻执行defer后的语句,而是将defer后的语句压入一个独立的栈中,然后继续执行函数下一条语句

  • 当执行完毕后,再从defer栈(只是为了理解这么叫,实际其实只是一个独立的栈),依次从栈顶取出语句执行(先进后出原则)

  • defer将语句放入栈时,也会将相关的值拷贝同时入栈(入栈时是什么值就是什么值)

package mainimport "fmt"func sum(n1 int, n2 int) int {//当执行到defer时,会将defer后面的语句压入到独立的栈中(我们取名为defer栈吧)//当函数执行完毕后,再从defer栈,先进后出的方式出栈然后执行defer fmt.Println("ok1 n1=",n1) //n1 = 10defer fmt.Println("ok2 n2=",n2) //n2 = 20n1++ //添加代码: n1++n2++ //添加代码: n2++res := n1 + n2fmt.Println("ok3 res=",res) //res = 32return 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()//其他代码//连接的数据库还是可以使用的}
  • golang编程中的通常的做法是,创建资源后,比如(打开了文件,获取了数据库连接或者时等资源)可以执行defer语句来进行关闭(函数执行完后才从独立的栈中释放关闭资源)

  • defer可以继续使用创建的资源

  • 当函数执行完后,系统会依次从这个独立的栈中取出语句或关闭资源

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

--结束END--

本文标题: GO语言延迟函数defer怎么使用

本文链接: https://www.lsjlt.com/news/354090.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • GO语言延迟函数defer怎么使用
    今天小编给大家分享一下GO语言延迟函数defer怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。go语言中defer最...
    99+
    2023-07-05
  • Go语言中init函数和defer延迟调用关键词详解
    Go语言中init函数和defer延迟调用关键词 golang里面有两个保留函数         main 函数(只能应用于package m...
    99+
    2023-03-24
    go init函数和defer延迟调用 go init函数 go defer延迟调用
  • Go语言中init函数和defer延迟调用关键词的方法是什么
    这篇文章主要介绍“Go语言中init函数和defer延迟调用关键词的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Go语言中init函数和defer延迟调用关键词的方法是什么”文章能帮助大...
    99+
    2023-07-05
  • GO语言中err接口及defer延迟异常怎么处理
    这篇“GO语言中err接口及defer延迟异常怎么处理”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“GO语言中err接口及d...
    99+
    2023-06-30
  • Go语言函数的延迟调用(DeferredCode)详解
    目录基本功能示例一:延迟调用执行顺序示例二:多defer使用方法实例三:defer与局部变量、返回值的关系先解释一下这篇Blog延期的原因,本来已经准备好了全部内容,但是当我重新回顾...
    99+
    2024-04-02
  • Go语言函数的延迟调用实例分析
    今天小编给大家分享一下Go语言函数的延迟调用实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。基本功能在以下这段代码中,...
    99+
    2023-07-02
  • GO语言中err接口及defer延迟异常处理分析
    目录err接口panic函数defer延迟defer与匿名函数结合使用recover防止程序中断err接口 Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内...
    99+
    2024-04-02
  • Go语言中defer语句怎么使用
    今天小编给大家分享一下Go语言中defer语句怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.在一个函数内的def...
    99+
    2023-07-02
  • Go语言之init函数怎么使用
    今天小编给大家分享一下Go语言之init函数怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。init函数会在main函...
    99+
    2023-07-02
  • Go语言怎么使用变长参数函数
    目录01 介绍02 变长参数03 变长参数函数04 使用场景05 总结本文我们主要介绍在 Go 语言中怎么使用变长参数函数,先是介绍变长参数和变长参数函数的相关知识,然后列举了一个简...
    99+
    2024-04-02
  • Go语言函数怎么定义与使用
    今天小编给大家分享一下Go语言函数怎么定义与使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.前言函数是一段代码的片段,...
    99+
    2023-07-04
  • go语言怎么调用函数
    本文小编为大家详细介绍“go语言怎么调用函数”,内容详细,步骤清晰,细节处理妥当,希望这篇“go语言怎么调用函数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在go语言中,定义了函数之后,我们可以通过“函数名()...
    99+
    2023-07-04
  • Go语言中make和new函数怎么使用
    这篇文章主要讲解了“Go语言中make和new函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言中make和new函数怎么使用”吧!相同点:make和new都是用来创建分配类...
    99+
    2023-07-02
  • go语言中的输入函数怎么使用
    这篇“go语言中的输入函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言中的输入函数怎么使用”文章吧。go语...
    99+
    2023-07-04
  • Golang函数的defer语句使用解析
    Golang是一种面向对象、并发支持、编译成机器码的编程语言,具备简洁的语法、高效的性能和丰富的标准库。在Golang中,使用defer语句对某个函数进行延迟执行,这种语言特性在编写代码时非常有用。本文将阐述Golang函数的defer语句...
    99+
    2023-05-16
    函数 Golang defer语句
  • jquery延迟对象怎么使用
    这篇文章主要介绍“jquery延迟对象怎么使用”,在日常操作中,相信很多人在jquery延迟对象怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jquery延迟对象怎么使用”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-04
  • Go语言中的函数与方法怎么使用
    这篇文章主要介绍了Go语言中的函数与方法怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言中的函数与方法怎么使用文章都会有所收获,下面我们一起来看看吧。函数定义语法与大部分语言一致,Go语言中的函数...
    99+
    2023-07-02
  • Go语言中的函数怎么调用
    本篇内容介绍了“Go语言中的函数怎么调用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.函数的声明定义//func关键字//getStud...
    99+
    2023-07-02
  • 一文搞懂Go语言中defer关键字的使用
    目录前言defer是什么多个defer的执行顺序延迟函数的参数在defer声明时就决定了defer和return的顺序defer和panicdefer下的函数参数包含子函数总结前言 ...
    99+
    2024-04-02
  • 如何在Go语言中使用函数?
    Go语言是一种现代化的编程语言,它拥有高效的并发性能和强大的编译能力,越来越多的程序员开始使用它来开发软件。在Go语言中,函数是一种非常重要的概念,本篇文章将会介绍如何在Go语言中使用函数。 一、函数的定义 在Go语言中,函数的定义格式如下...
    99+
    2023-08-13
    数据类型 教程 函数
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作