Pour construire sur la réponse de Nemo :
println
est une fonction intégrée au langage. Elle se trouve dans la section Bootstrapping de l'interface utilisateur de l spec . Du lien :
Les implémentations actuelles fournissent plusieurs fonctions intégrées utiles pendant l'amorçage. Ces fonctions sont documentées pour être complètes mais ne sont pas garanties de rester dans le langage. Elles ne retournent pas un résultat.
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
Ainsi, ils sont utiles aux développeurs, car ils n'ont pas de dépendances (étant intégrés dans le compilateur), mais pas dans le code de production. Il est également important de noter que print
y println
rapport à stderr
pas stdout
.
La famille fournie par fmt
sont cependant construits pour être dans le code de production. Ils rapportent de manière prévisible à stdout
sauf indication contraire. Ils sont plus polyvalents ( fmt.Fprint*
peut se présenter à n'importe quel io.Writer
comme os.Stdout
, os.Stderr
ou même un net.Conn
) et ne sont pas spécifiques à une mise en œuvre.
La plupart des paquets qui sont responsables de la production ont fmt
en tant que dépendance, comme log
. Si votre programme est destiné à sortir quelque chose en production, fmt
est très probablement le paquet que vous voulez.