go语言学习笔记:Deferred函数

defer关键字后面跟的函数会推迟到函数结束时候调用,这个太厉害了。这可以让我们无需多次调用close、free之类的函数,并且保证他们不会漏执行。

package ioutil
func ReadFile(filename string) ([]byte, error) {
    f, err := os.Open(filename)
    if err != nil {
        return nil, err
    }
    defer f.Close()
    return ReadAll(f)
}
var mu sync.Mutex
var m = make(map[string]int)
func lookup(key string) int {
    mu.Lock()
    defer mu.Unlock()
    return m[key]
}
func title(url string) error {
    resp, err := http.Get(url)
    if err != nil {
        return err
    }
    defer resp.Body.Close()  //会被推迟到title函数结束时候调用
    ------
}
posted @ 2017-11-28 09:41  你的KPI完成了吗  阅读(213)  评论(0)    收藏  举报