таблица с основными форматами Printf в Go
Шпаргалка по форматным строкам fmt.Printf
Шпаргалка по форматным строкам fmt.Printf
Формат | Тип данных | Пример вывода | Описание | С # (если применимо) |
---|---|---|---|---|
Общие | ||||
%v |
Любой | {John 25} |
Универсальный формат | %#v → main.Person{Name:"John"} |
%+v |
Структуры | {Name:John Age:25} |
С именами полей | — |
%T |
Любой | string |
Тип переменной | — |
%% |
— | % |
Вывод знака % |
— |
Целые числа | ||||
%d |
int |
42 |
Десятичное число | — |
%#x |
int |
0x2a |
Шестнадцатеричное с 0x |
Без # : 2a |
%#o |
int |
052 |
Восьмеричное с 0 |
Без # : 52 |
%b |
int |
101010 |
Двоичное | %#b → 0b101010 (редко) |
Символы | ||||
%c |
rune |
A |
Символ по коду | — |
%U |
rune |
U+0041 |
Код Unicode | %#U → U+0041 'A' |
%q |
rune /string |
'A' / "A" |
Кавычки вокруг значения | %#q → 'A' (для рун) |
Строки | ||||
%s |
string |
Hello |
Чистая строка | — |
%x |
string /[]byte |
48656c6c6f |
Шестнадцатеричный дамп | %#x → 0x48656c6c6f |
Плавающие | ||||
%f |
float64 |
3.141593 |
Обычный формат | — |
%g |
float64 |
3.14159 |
Автовыбор (%f или %e ) |
%#g → Без изменений |
%e |
float64 |
3.141593e+00 |
Экспоненциальный формат | — |
Указатели | ||||
%p |
Указатель | 0xc0000180a8 |
Адрес памяти | %#p → c0000180a8 (без 0x ) |
Ширина/Точность | ||||
%5d |
int |
42 |
Фиксированная ширина (5 символов) | — |
%05d |
int |
00042 |
Дополнение нулями | — |
%.2f |
float64 |
3.14 |
Ограничение знаков после точки | — |
Примеры использования
fmt.Printf("|%#v|%5d|%05d|\n", struct{ X int }{1}, 42, 42)
// |struct { X int }{X:1}| 42|00042|
fmt.Printf("|%#x|%#U|\n", 42, 'A')
// |0x2a|U+0041 'A'|
⚠️ Особенности
- Флаг
#
работает только с%v
,%x
,%X
,%o
,%U
,%p
,%q
. - Для
%g
,%s
,%d
и других — игнорируется. %#q
для строк оставляет двойные кавычки, для рун — одинарные.