让我们以这段代码为例,它使记录器写入本地文件而不是标准输出:
f, err := os.OpenFile("filename", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
log.Fatal(err)
}
defer f.Close()
log.SetOutput(f)
作者将此代码直接放入函数中,使其按预期工作。但是,如果我想把这个代码放到一个专用的函数中,然后调用它,那么它将不再起作用,因为在使用记录器之前会调用它。main()main()f.Close()
例如(如果上面的代码现在位于名为 的函数中):logToFile()
main() {
logToFile()
log.Print("I'm going to end up in stdout\n")
}
这是否可以移动到自己的功能中,并且仍然按预期工作?
我在打开/关闭数据库连接时也遇到过同样的情况。而且似乎唯一的方法就是在 里面做这两件事,但我认为如果我们能把它分成函数,代码看起来会更干净,更SoC。这是围棋中的禁忌吗?main()
侃侃无极
慕尼黑5688855
相关分类