前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go+ defer

Go+ defer

作者头像
上分如喝水
发布2021-12-13 08:37:34
2520
发布2021-12-13 08:37:34
举报
文章被收录于专栏:XiaoLin笔记

defer概述

defer是延迟语句,当我们打开某些资源,比如说数据库连接资源、文件资源、IO资源的时候,我们在使用完或者是遇到错误之前需要提前返回,否则互造成资源泄露或者是占用系统内存过高的问题,有点类似Java的try...catch...finally,finally后常见的操作是释放资源。总结来说,defer的特性是:

  1. defer用于延迟调用。
  2. 如果有多个defer的话。按照栈的特性:先进后出的方式执行。

defer基本用法

defer有点类似于栈,采用的是先进后出的一种模式,先进去的是最后出来。

代码语言:javascript
复制
for i := 0; i < 3; i++ {
	defer println(i)
} // 2 1 0

我们可以看到,他输出的结果是2、1、0。defer的作用常见的有三个:

  1. 关闭文件句柄。
  2. 释放各种资源(包括锁资源、连接池资源)。

defer、return、返回值

我们常见的是defer、return、和返回值之间的关系,他们三个执行的顺序是return最先执行同时return负责将结果赋值给返回值。接着defer做一些收尾工作,最后函数携带当前返回值退出。

延迟宕机

有一些时候,我们并不希望出现错误就马上宕机,而是希望在宕机前可以做一点其他事情,这个时候我们可以使用defer语句。

代码语言:javascript
复制
defer println("宕机后要做的事情1")
defer println("宕机后要做的事情2")
panic "宕机了"

在宕机之前,先会执行第一句和第二句代码,这个是defer的其中一种基本用法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/12/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • defer概述
  • defer基本用法
    • defer、return、返回值
      • 延迟宕机
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档