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 printe 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.Conntipo.) E não são a implementação específica.
A maioria dos pacotes que são responsáveis pela saída possuem fmtuma dependência, como log. Se o seu programa vai gerar qualquer coisa em produção, fmtprovavelmente é o pacote que você deseja.