婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > GO語言Defer用法實例分析

GO語言Defer用法實例分析

熱門標簽:外呼系統(tǒng)如何接收服務(wù)密碼 外呼系統(tǒng)多少錢一年 海外照相館地圖標注入駐 旅游廁所如何電子地圖標注 智能營銷軟件 工商信用卡外呼系統(tǒng)教程 經(jīng)常接到推銷電話機器人的電話 滁州自建外呼系統(tǒng) 客服級電銷機器人

本文實例講述了GO語言Defer用法。分享給大家供大家參考。具體分析如下:

defer:調(diào)用一個被 defer 的函數(shù)時在函數(shù)剛要返回之前延遲執(zhí)行,當函數(shù)無論怎樣返回,某資源必須釋放時,可用這種與眾不同、但有效的處理方式。傳統(tǒng)的例子包括解鎖互斥或關(guān)閉文件。

這樣延遲一個函數(shù)有雙重優(yōu)勢:一是你永遠不會忘記關(guān)閉文件,此錯誤在你事后編輯函數(shù)添加一個返回路徑時常常發(fā)生。二是關(guān)閉和打開靠在一起,比放在函數(shù)尾要清晰很多。

復(fù)制代碼 代碼如下:
/**
 * Created with IntelliJ IDEA.
 * To change this template use File | Settings | File Templates.
 * Name:Defer
 */
package main
import (
 "fmt"
 "os"
 "log"
 "io"
)
//將文件內(nèi)容作為一個字符串返回
func Contents(filename string) (string) {
 //打開文件
 f, err := os.Open(filename)
 if err != nil {
  log.Printf("%s",err)
 }
 fmt.Println("Close前>",f)
 // 如果f.Close在這里執(zhí)行時就完了。所以用DEFER延時執(zhí)行
 // 他應(yīng)該會在f.Read()接收完后執(zhí)行 (我個人理解)
 defer f.Close()
 fmt.Println("Close后>",f)
 var result []byte
 buf := make([]byte, 100)
 for {
  n, err := f.Read(buf[0:])
  result = append(result, buf[0:n]...)
  if err != nil {
   if err == io.EOF {
    break
   }
   log.Printf("未接收完關(guān)閉了f>%s",err)  // 如果f提前關(guān)閉了,打印
  }
 }
 return string(result)
}
func main() {

 fileurl := os.Getenv("HOME")
 filename := fileurl+"/test.txt"
 fmt.Println(Contents(filename))
}

我們可以更好的利用被延遲執(zhí)行函數(shù)時特點

復(fù)制代碼 代碼如下:
/**
 * Created with IntelliJ IDEA.
 * To change this template use File | Settings | File Templates.
 * Name:Defer
 */
package main
import (
 "fmt"

)
func trace(s string) string {
 fmt.Println("entering:", s)
 return s
}
func un(s string) {
 fmt.Println("leaving:", s)
}
func a() {
 defer un(trace("a"))
 fmt.Println("in a")
}
func b() {
 defer un(trace("b"))
 fmt.Println("in b")
 a()
}
func main() {
 b()
}

希望本文所述對大家的Go語言程序設(shè)計有所幫助。

您可能感興趣的文章:
  • Go語言中的延遲函數(shù)defer示例詳解
  • 總結(jié)Go語言中defer的使用和注意要點
  • GO語言延遲函數(shù)defer用法分析
  • Go語言defer語句的三種機制整理

標簽:晉城 本溪 湘潭 運城 楚雄 九江 深圳 喀什

巨人網(wǎng)絡(luò)通訊聲明:本文標題《GO語言Defer用法實例分析》,本文關(guān)鍵詞  語言,Defer,用法,實例分析,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《GO語言Defer用法實例分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于GO語言Defer用法實例分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 卢湾区| 曲水县| 涟源市| 榆社县| 玛纳斯县| 凤山县| 平利县| 伊川县| 高安市| 读书| 宜昌市| 云梦县| 康保县| 西藏| 孟州市| 咸阳市| 黑水县| 江北区| 双江| 简阳市| 墨脱县| 浦江县| 定边县| 和顺县| 黄冈市| 手游| 莱芜市| 罗源县| 南皮县| 郎溪县| 五指山市| 内江市| 泰来县| 泾源县| 德庆县| 临安市| 凤庆县| 枝江市| 会昌县| 平潭县| 台东市|