DEV Community

manuel
manuel

Posted on • Originally published at mnlwldr.com on

println() and fmt.Println()

#go

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")
}
Enter fullscreen mode Exit fullscreen mode

and

for {    
    println("y")    
}        
Enter fullscreen mode Exit fullscreen mode

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

Top comments (0)