Para construir sobre la respuesta de nemo:
printlnes una función integrada en el lenguaje. Está en la sección Bootstrapping de la especificación . Desde el enlace:
Las implementaciones actuales proporcionan varias funciones integradas útiles durante el arranque. Estas funciones están documentadas para que estén completas, pero no se garantiza que permanezcan en el idioma. No devuelven un 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
Por lo tanto, son útiles para los desarrolladores, porque carecen de dependencias (están integradas en el compilador), pero no en el código de producción. También es importante tener en cuenta eso printe println informar stderr, nostdout .
fmtSin embargo, la familia proporcionada por está construida para estar en código de producción. Informan previsiblemente a stdout, a menos que se especifique lo contrario. Ellos son más versátiles ( fmt.Fprint*pueden informar a cualquiera io.Writer, como por ejemplo os.Stdout, os.Stderro incluso un net.Conntipo.) Y no son específicos de la aplicación.
La mayoría de los paquetes que son responsables de la salida tienen fmtuna dependencia, como log. Si su programa va a generar algo en producción, fmtlo más probable es que sea el paquete que desea.
Ejemplo interesante:
Es algo diferente entre
printlnyfmt.Printf.fuente