弄你好   

逆序:好你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:推迟有一个重要的特性,即便函数抛出了异常,推迟也会被执行的。这样就不会因为程序出现了错误,导致资源不会被释放了。

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。