Para desenvolver a resposta do nemo:
println
é uma função incorporada à linguagem. Ele está na seção Bootstrapping da especificação . Do link:
As implementações atuais fornecem várias funções integradas úteis durante a inicialização. Essas funções são documentadas para integridade, mas não é garantido que permaneçam no idioma. Eles não retornam um resultado.
Function Behavior
print prints all arguments; formatting of arguments is implementation-specific
println like print but prints spaces between arguments and a newline at the end
Portanto, eles são úteis para os desenvolvedores, porque não possuem dependências (sendo construídas no compilador), mas não no código de produção. Também é importante observar isso print
e println
informar stderr
, nãostdout
.
A família fornecida por fmt
, no entanto, é construída para estar em código de produção. Eles se reportam previsivelmente stdout
, a menos que especificado de outra forma. Eles são mais versátil ( fmt.Fprint*
pode denunciar a qualquer io.Writer
, como os.Stdout
, os.Stderr
, ou mesmo um net.Conn
tipo.) E não são a implementação específica.
A maioria dos pacotes que são responsáveis pela saída possuem fmt
uma dependência, como log
. Se o seu programa vai gerar qualquer coisa em produção, fmt
provavelmente é o pacote que você deseja.
Exemplo interessante:
É algo diferente entre
println
efmt.Printf
.fonte