Go的ErrorLog.Fatal和Defer
Posted Harris-H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go的ErrorLog.Fatal和Defer相关的知识,希望对你有一定的参考价值。
Go的Error、Log.Fatal和Defer
1.Error
1.errors.New 创建errow对象
2.fmt.Errorf 用字符串创建error对象。
3.自定义
2.Log.Fatal 和 Panic的区别
func fileSize(filename string) int64
f, err := os.Open(filename)
if err != nil
return 0
// 延迟调用Close, 此时Close不会被调用
defer f.Close()
info, err := f.Stat()
if err != nil
// defer机制触发, 调用Close关闭文件
return 0
size := info.Size()
// defer机制触发, 调用Close关闭文件
return size
代码中加粗部分为对比前面代码而修改的部分,代码说明如下:
- 第 10 行,在文件正常打开后,使用 defer,将 f.Close() 延迟调用,注意,不能将这一句代码放在第 4 行空行处,一旦文件打开错误,f 将为空,在延迟语句触发时,将触发宕机错误。
- 第 16 行和第 22 行,defer 后的语句(f.Close())将会在函数返回前被调用,自动释放资源。
3.Defer延迟
4.参考文章
以上是关于Go的ErrorLog.Fatal和Defer的主要内容,如果未能解决你的问题,请参考以下文章