弄你好
逆序:好你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:推迟有一个重要的特性,即便函数抛出了异常,推迟也会被执行的。这样就不会因为程序出现了错误,导致资源不会被释放了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。