println()
is a built-in function and looks useful to developers, because they lack dependencies. But there is a difference between fmt.Println()
and println()
.
println()
write to stderr
instead of stdout
and I never noticed that before, maybe because I didn’t used println
so much in the past.
I discovered this because I wanted to compare the throughput of
for {
fmt.Println("y")
}
and
for {
println("y")
}
by pipe this to pv -r
. So I wondered why I got a lot of “y” in the println()
variant.
The println built-in function formats its arguments in an implementation-specific way and writes the result to standard error. Spaces are always added between arguments and a newline is appended. Println is useful for bootstrapping and debugging; it is not guaranteed to stay in the language.
Top comments (0)