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、なぜ or の代わりに使用する必要があるのでしょうfmt.Printlnfmt.Sprintln?

実際的な理由はありますか?

4

1 に答える 1

132

次の 2 つの点が異なります。

  1. パッケージログを介した印刷は、同時ゴルーチンから安全です (プレーンfmtはそうではありません)

  2. ログは、タイミング情報を自動的に追加できます。

したがって、これらは2つの完全に異なるものです。log は、ロギングおよびfmtフォーマット用です。(わかりました、ログは同じ動詞とフラグを使用しますが、それは便利です).

于 2013-10-28T23:27:49.297 に答える