Para construir sobre la respuesta de nemo:
println
es 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 print
e println
informar stderr
, nostdout
.
fmt
Sin 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.Stderr
o incluso un net.Conn
tipo.) Y no son específicos de la aplicación.
La mayoría de los paquetes que son responsables de la salida tienen fmt
una dependencia, como log
. Si su programa va a generar algo en producción, fmt
lo más probable es que sea el paquete que desea.
Ejemplo interesante:
Es algo diferente entre
println
yfmt.Printf
.fuente