栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

学习笔记,写到哪是哪。

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语句中释放占用的资源,可以在方法结束后自动释放掉。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/861962.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号