Чтобы основываться на ответе Немо:
printlnэто функция, встроенная в язык. Он находится в разделе спецификации начальной загрузки . По ссылке:
Текущие реализации предоставляют несколько встроенных функций, полезных во время начальной загрузки. Эти функции задокументированы для полноты, но не гарантируется, что они останутся на языке. Они не возвращают результат.
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
Таким образом, они полезны для разработчиков, потому что у них отсутствуют зависимости (встроенные в компилятор), но не в производственном коде. Также важно отметить , что printи println доклад stderr, а неstdout .
Семейство, предоставляемое fmt, однако, построено для использования в производственном коде. Они предсказуемо отчитываются stdout, если не указано иное. Они более универсальны ( fmt.Fprint*могут сообщить любому io.Writer, например os.Stdout, os.Stderrили дажеnet.Conn тип.) И не конкретной реализации.
Большинство пакетов, отвечающих за вывод, имеют fmtв качестве зависимости, например log. Если ваша программа будет выводить что-либо в рабочем состоянии, fmtскорее всего, это именно тот пакет, который вам нужен.