println() and fmt.Println()

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 {


for {    

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.

println in the Golang built-in documentation