91

来自log.go(日志包的实现):

167 // Println calls l.Output to print to the logger.
168 // Arguments are handled in the manner of fmt.Println.
169 func (l *Logger) Println(v ...interface{}) { l.Output(2, fmt.Sprintln(v...)) }

log.Println只是一个函数包装器fmt.Sprintln,我为什么要使用它而不是fmt.Printlnorfmt.Sprintln

有什么实际原因吗?

4

1 回答 1

132

有两点不同:

  1. 通过包日志打印对并发 goroutines 是安全的(虽然普通fmt不是)

  2. 日志可以自动添加计时信息。

所以这是两个完全不同的东西。log 用于记录和fmt格式化。(好吧,log 使用相同的动词和标志,但这只是方便)。

于 2013-10-28T23:27:49.297 回答