Go入门指南-17.2defer 模式

当资源不再被使用时,使用 defer延迟调用其后的代码,确保资源能够被关闭或返回给连接池。其次最重要的是从 panic中恢复程序运行。

(1) 关闭文件流:(参照 § 12.7)

// open a file f

defer f.Close()

(2) 解锁一个已加锁的资源 (a mutex):(参照 §9.3)

mu.Lock()

defer mu.Unlock()

(3) 关闭 channel (如果必要的话):

ch := make(chan float64)

defer close(ch)

(4) 从 panic 中恢复:(参见: 章节 13.3

defer func() {

	if err := recover(); err != nil {

		log.Printf(“run time panic: %v”, err)
		
	}

}

(5) 停止一个 Ticker:(参见: 章节 14.5

tick1 := time.NewTicker(updateInterval)

defer tick1.Stop()

(6) 释放一个进程 p :(参见: 章节 13.6

p, err := os.StartProcess(,,)

defer p.Release()

(7) 停止 CPU 分析并刷新信息:(参见: 章节 13.10

pprof.StartCPUProfile(f)

defer pprof.StopCPUProfile()

它也能用于不要忘了在一个报告中打印页脚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白小白的学习笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值