Список спецификаторов формата в Go, используемых в функции fmt.Printf
и других функциях форматирования в пакете fmt
. Включает как стандартные спецификаторы, так и те, которые используются для работы с ошибками.
Полный список спецификаторов формата
Основные Спецификаторы:
**%v**
: Используется для стандартного представления значения.
fmt.Printf("%v\n", 42) // 42
fmt.Printf("%v\n", "hello") // hello
%+v
: Печатает значения с именами полей в структурах.
type Person struct { Name string Age int } p := Person{Name: "John", Age: 30} fmt.Printf("%+v\n", p) // {Name:John Age:30}
%#v
: Печатает значения в виде Go-кода, который можно использовать для воссоздания объекта.
fmt.Printf("%#v\n", 42) // 42
fmt.Printf("%#v\n", "hello") // "hello"
Спецификаторы для строк:
-
%s
: Печатает строку. -
fmt.Printf("%s\n", "hello") // hello
%q
: Печатает строку в виде литерала с двойными кавычками.
fmt.Printf("%q\n", "hello") // "hello"
Спецификаторы для целых чисел:
-
%d
: Печатает целое число в десятичной системе. -
fmt.Printf("%d\n", 255) // 255
%o
: Печатает целое число в восьмеричной системе.
fmt.Printf("%o\n", 255) // 377
Спецификаторы для чисел с плавающей точкой:
-
%f
: Печатает число с плавающей точкой. -
fmt.Printf("%f\n", 3.14159) // 3.141590
%e
: Печатает число с плавающей точкой в экспоненциальной записи.
fmt.Printf("%e\n", 3.14159) // 3.141590e+00
Спецификаторы для указателей:
%p
: Печатает адрес (указатель) в шестнадцатеричном формате.-
var x int fmt.Printf("%p\n", &x) // 0xc0000b6000 (адрес в вашей системе может отличаться)
Спецификаторы для ошибок:
%w
: Используется в функцииfmt.Errorf
для оборачивания ошибок.-
err := fmt.Errorf("original error") wrappedErr := fmt.Errorf("context: %w", err) fmt.Println(wrappedErr) // context: original error
Спецификаторы для чисел и форматирования:
%d
: Печатает целое число в десятичной системе.
fmt.Printf("%d\n", 42) // 42
var n int fmt.Fprintf(&n, "hello %d", 42) // hello 42 fmt.Printf("%d\n", n) // 11
Заключение
Спецификаторы формата в Go предоставляют гибкие средства для форматирования строк и представления различных типов данных.
Правильное использование этих спецификаторов позволяет создать ясные и информативные сообщения для отладки и вывода данных.