Вывод и форматирование
Пакет fmt умеет выводить значения и собирать форматированный текст. Print пишет значения подряд, Println добавляет пробелы между аргументами и перевод строки, а Printf подставляет значения в формат.
В строке формата verb начинается с % и задаёт представление следующего аргумента. Например, %s подходит строке, %d — целому числу, %t — логическому значению, а %v выбирает стандартное представление. Для отладки часто используют %#v, который показывает значение в Go-подобном виде, и %T для типа. Количество и порядок verbs должны соответствовать аргументам.
Пример
package main
import (
"bytes"
"fmt"
)
func main() {
name := "Мира"
visits := 3
active := true
fmt.Printf("%s: посещений %d, активна: %t\n", name, visits, active)
card := fmt.Sprintf("%s (%d)", name, visits)
fmt.Println(card)
var report bytes.Buffer
fmt.Fprintf(&report, "участник=%q; тип счётчика=%T\n", name, visits)
fmt.Print(report.String())
}
Printf выводит форматированный текст в стандартный вывод. Sprintf возвращает готовую строку, которую можно сохранить или передать дальше. Fprintf пишет в переданный объект с методом Write; в примере это буфер в памяти. Verb %q заключает строку в кавычки, а %T печатает тип аргумента.
Внутри формат-строки последовательность \n означает перевод строки, \t — табуляцию, а \" — кавычку. Это специальные escape-последовательности Go, они не являются форматирующими verbs.
Если тип аргумента не совпадает с verb, fmt обычно выводит поясняющую метку вместо ошибки компиляции. Поэтому форматную строку тоже стоит проверять при чтении кода.