`

go defer

    博客分类:
  • go
 
阅读更多
defer一般可以用在中途有返回,需要多次资源回收的地方,这样在前面defer一下,可以省去return时重复的代码,如对文件操作等.
defer的执行在return之后,defer语句并不会马上执行,而是会进入一个栈,会按先进后出的顺序执行。也说是说最先被定义的defer语句最后执行

并且要写在panic之前

package main

import "fmt"

func a()  {
	fmt.Println("a")
}

func b()  {
	fmt.Println("b")
}

//defer在return之后执行
func c() (i int) {
	defer func() { i++ }()
	return 1
}

func d()(err error){
	defer func() { fmt.Println("d") }()
	panic(err)
}

func main()  {
	defer a()
	b()
	fmt.Println(c())
	d()
	return
}



b
2
d
a
分享到:
评论

相关推荐

    GO语言Defer用法实例分析

    在Go语言中,defer关键字用于延迟函数的执行,直到包含它的函数结束。这一功能在需要清理资源,比如关闭文件、解锁互斥量等场景下非常有用。本文将对Go语言的defer用法进行详细分析,并通过实例来展示其实际使用方法...

    总结Go语言中defer的使用和注意要点

    ### Go语言中`defer`的关键应用与注意事项 #### 前言 `defer`作为Go语言中的一个核心关键字,主要用于确保资源(如文件句柄、网络连接或锁)能够在程序执行过程中得到适当的释放。这对于避免资源泄漏至关重要。...

    GO语言延迟函数defer用法分析

    本文实例讲述了GO语言延迟函数defer用法。分享给大家供大家参考。具体分析如下: defer 在声明时不会立即执行,而是在函数 return 后,再按照 FILO (先进后出)的原则依次执行每一个 defer,一般用于异常处理、释放...

    Go语言defer语句的三种机制整理

    Golang 的 1.13 版本 与 1.14 版本对 defer 进行了两次优化,使得 defer 的性能开销在大部分场景下都得到大幅降低,其中到底经历了什么原理? 这是因为这两个版本对 defer 各加入了一项新的机制,使得 defer 语句在...

    Go语言中的延迟函数defer示例详解

    大家都知道go语言的defer功能很强大,对于资源管理非常方便,但是如果没用好,也会有陷阱哦。Go 语言中延迟函数 defer 充当着 try…catch 的重任,使用起来也非常简便,然而在实际应用中,很多 gopher 并没有真正搞...

    掌握Go语言的异常处理:defer、panic和recover的协同艺术

    ### 掌握Go语言的异常处理:defer、panic和recover的协同艺术 #### 一、Go语言概述 Go,也被称为Golang,是由Google开发的一种开源编程语言。它以其简洁的语法、高效的编译速度、强大的并发支持以及自动内存管理等...

    Go使用defer函数要注意的几个点

    defer 函数大家肯定都用过,它在声明时不会立刻去执行,而是在函数 return 后去执行的。 它的主要应用场景有异常处理、记录日志、清理数据、释放资源 等等。 这篇文章不是分享 defer 的应用场景,而是分享使用 defer...

    Golang巧用defer进行错误处理的方法

    本文主要跟大家介绍了Golang巧用defer进行错误处理的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 问题引入 毫无疑问,错误处理是程序的重要组成部分,有效且优雅的处理错误是大多数程序员的追求。很...

    聊聊golang的defer的使用

    本文主要研究一下golang的defer defer return先赋值(对于命名返回值),然后执行defer,最后函数返回 defer函数调用的执行顺序与它们分别所属的defer语句的执行顺序相反 defer后面的表达式可以是func或者是method...

    golang善用go func和defer

    panic是有秩序的,退出之前会执行完先处理完当前goroutine已经defer【挂上去】的任务,若某个defer在panic之后,则不会被执行。 panic仅保证当前goroutine下的defer都会被调到,但不保证其他协程的defer也会调到 ...

    golang中defer的关键特性示例详解

    前言 ...go 的 defer 语句是用来延迟执行函数的,而且延迟发生在调用函数 return 之后,比如 func a() int { defer b() return 0 } b 的执行是发生在 return 0 之后,注意 defer 的语法,关键字 de

    go代码-defer_defer.go

    在Go语言中,`defer` 是一个非常重要的特性,它用于在函数返回之前执行特定的清理操作。这个特性尤其有用,因为它确保了无论函数是否正常结束或者遇到错误,相关的资源都可以得到适当的释放。我们来详细了解一下`...

    Go语言学习笔记.pdf 共174页

    在函数部分,作者详细介绍了Go语言中的函数,包括函数类型、多返回值、命名返回参数、变参、匿名函数、闭包、defer、panic、recover等内容。 在函数类型部分,作者讲解了Go语言中的函数类型,包括函数的定义和使用...

    Go语言圣经,golang学习入门到精通

    Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的语言。它旨在提高编程效率,简化并发编程,并强调简洁的编程哲学。Go语言的设计受到了多门经典编程语言的影响,如C语言、...

    Golang控制流三剑客:defer、go和return深度剖析

    Golang,通常被称为Go语言,是一种由谷歌开发的编程语言。它以简洁、高效、安全著称,并且非常适合构建大规模的分布式系统和微服务。Go语言的一些主要特点包括: 1. **简洁性**:Go语言的语法非常简单,易于学习。 ...

    go语言编程,Go语言程序设计(英文版),学习 Go 语言(Golang),golang-china读书笔记

    Go语言,也被称为Golang,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。自2009年发布以来,Go语言因其简洁的语法、高效的性能以及对并发编程的良好支持,受到了广大开发者的欢迎...

    defer的基本使用.go

    defer的基本使用.go

    学习Golang编程实例精选

    25. Golang实现的简单爬虫:Go语言中的爬虫可以用来实现网络爬虫和数据采集。 26. Go TCP Server 创建:Go语言中的TCP Server可以用来实现TCP服务器的创建和管理。 27. Go HTTP Server 创建:Go语言中的...

Global site tag (gtag.js) - Google Analytics