Знание должно быть доступно!

Путь /Программирование/Языки/Golang

Список спецификаторов формата в 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 предоставляют гибкие средства для форматирования строк и представления различных типов данных.

Правильное использование этих спецификаторов позволяет создать ясные и информативные сообщения для отладки и вывода данных.