Go语学习笔记 - defer | 从零开始Go语言

Go语学习笔记 - defer | 从零开始Go语言,第1张

学习笔记,写到哪是哪。

Go语言的defer关键字很神奇,在其他语言没见过。defer后的内容会在方法执行结束后执行,但是要注意如果存在多个defer语句的时候,defer的执行顺序是倒序的。

样例代码如下

package main

import (
	"fmt"
	"sync"
)

var (
	baseMap = make(map[string]int)
	lock    sync.Mutex
)

// defer顺序
func test_defer1() {
	fmt.Println("start")
	defer fmt.Println("1")
	defer fmt.Println("2")
	defer fmt.Println("3")
}

//释放资源
func test_defer2(a string) int {
	lock.Lock()
	defer lock.Unlock()
	return baseMap[a]
}

func main() {
	test_defer1()
	baseMap["小张"] = 18
	baseMap["小红"] = 20
	fmt.Println(test_defer2("小红"))
}

执行结果

start



20

注意

1、可以看到3个defer语句最终数据的顺序,最后的defer语句是第一个执行的内容。

2、defer语句可以用在释放资源方面,这点有点类似java中使用try-catch-finally语法,在finally语句中释放资源一样,在defer语句中释放占用的资源,可以在方法结束后自动释放掉。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/989586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存