弄你好
逆序:好你neevaN
<强>三,推迟的实际应用
func (r矩形)地区(wg * sync.WaitGroup) {
如果r。长度& lt;0 {
fmt。Printf("矩形% v的长度应大于0 \ n”,右)
wg.Done ()
返回
}
如果r。宽度& lt;0 {
fmt。Printf("矩形% v的宽度应大于0 \ n”,右)
wg.Done ()
返回
}
面积:=r。长度* r.width
fmt。Printf("矩形% v % d \ n”, r,区域)
wg.Done ()
}
之前
我们会发现上面wg.Done()被调用多次我们可以使用推迟来优化代码
func (r矩形)地区(wg * sync.WaitGroup) {
推迟wg.Done ()
如果r。长度& lt;0 {
fmt。Printf("矩形% v的长度应大于0 \ n”,右)
返回
}
如果r。宽度& lt;0 {
fmt。Printf("矩形% v的宽度应大于0 \ n”,右)
返回
}
面积:=r。长度* r.width
fmt。Printf("矩形% v % d \ n”, r,区域)
}
之前
使用推迟延时调用,会在程序结束之前调用
<强>下面举个例子:
主要包
进口“fmt”
func deferTest int (int) {
推迟func () {
数量+ +
fmt。Println(“三:”,编号)
} ()
推迟func () {
数量+ +
fmt。Println(“二:”,编号)
} ()
推迟func () {
数量+ +
fmt。Println(“:”号)
} ()
返回数
}
函数main () {
fmt。Println(“函数返回值:“,deferTest (0))
}
之前
上面的代码打印的结果是:
: 1
二:2
三:3
函数返回值:0
PS:推迟有一个重要的特性,即便函数抛出了异常,推迟也会被执行的。这样就不会因为程序出现了错误,导致资源不会被释放了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。