Чтобы основываться на ответе Немо:
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
скорее всего, это именно тот пакет, который вам нужен.
Интересный пример:
Это некоторая разница между
println
иfmt.Printf
.источник