В языке программирования Go функция fmt.Printf
используется для форматированного вывода строк. Эта функция работает подобно функции printf
в C и других языках программирования, которые поддерживают такой вид форматирования.
Функция fmt.Printf
принимает строку формата, в которой спецификаторы формата определяют, как аргументы должны быть отформатированы и выводимы. Вот основные спецификаторы формата, которые вы можете использовать:
— %v
— значение в естественном формате
— %+v
— при выводе структур добавляет имена полей
— %#v
— значение в синтаксисе Go
— %T
— тип значения
— %d
— десятичное целое число
— %b
— двоичное представление
— %o
— восьмеричное представление
— %x
и %X
— шестнадцатеричное представление (со строчными и прописными буквами соответственно)
— %f
, %F
— десятичное представление с плавающей точкой
— %e
, %E
— научное представление числа с плавающей точкой (с маленькими и большими буквами e
соответственно)
— %g
, %G
— представление с плавающей точкой, выбирает %e
или %f
на основе значения
— %s
— строка
— %q
— строка в двойных кавычках, с экранированием как в Go
— %p
— представление указателя (адрес в памяти)
— %c
— символ (руна) соответствующий данному коду Unicode
— %t
— логическое значение (true или false)
Также можно использовать флаги для управления шириной и точностью вывода, а также выравниванием и заполнением. Например:
— %9d
— число будет выведено с шириной в 9 символов
— %-9d
— число будет выведено с шириной в 9 символов и выравниванием по левому краю
— %09d
— число будет выведено с шириной в 9 символов и лидирующими нулями
— %.2f
— число с плавающей точкой будет выведено с двумя знаками после запятой
— %6.2f
— число с плавающей точкой будет выведено с шириной в 6 символов, из которых два знака после запятой
Пример использования fmt.Printf
в Go:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package main import ( "fmt" ) func main() { var intValue int = 123 var floatValue float64 = 123.456 var stringValue string = "hello" var boolValue bool = true fmt.Printf("Целое число: %d\n", intValue) fmt.Printf("Целое число с шириной и нулями: %09d\n", intValue) fmt.Printf("Число с плавающей точкой: %.2f\n", floatValue) fmt.Printf("Строка: %s\n", stringValue) fmt.Printf("Строка с кавычками: %q\n", stringValue) fmt.Printf("Логическое значение: %t\n", boolValue) fmt.Printf("Тип переменной: %T\n", intValue) } |
Этот код демонстрирует использование различных спецификаторов формата. При запуске этого кода вы получите вывод, соответствующий выбранным спецификаторам.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
package main import ( "fmt" ) func main() { // Определение различных переменных для демонстрации форматирования str := "Hello, world!" num := 12345 bin := 6 // 110 в двоичной системе oct := 10 // 12 в восьмеричной системе hex := 255 // ff в шестнадцатеричной системе flt := 3.14159265 sci := 1.23e4 comp := 1 + 2i boo := true rune := 'A' ptr := &num // Структура для демонстрации %+v и %#v type Point struct { X int Y int } p := Point{1, 2} // Использование спецификаторов формата fmt.Printf("%v\n", str) // значение в естественном формате fmt.Printf("%+v\n", p) // при выводе структур добавляет имена полей fmt.Printf("%#v\n", p) // значение в синтаксисе Go fmt.Printf("%T\n", boo) // тип значения fmt.Printf("%d\n", num) // десятичное целое число fmt.Printf("%b\n", bin) // двоичное представление fmt.Printf("%o\n", oct) // восьмеричное представление fmt.Printf("%x\n", hex) // шестнадцатеричное представление со строчными буквами fmt.Printf("%X\n", hex) // шестнадцатеричное представление с прописными буквами fmt.Printf("%f\n", flt) // десятичное представление с плавающей точкой fmt.Printf("%e\n", sci) // научное представление с маленькими буквами e fmt.Printf("%E\n", sci) // научное представление с большими буквами E fmt.Printf("%g\n", comp) // представление с плавающей точкой, выбирает %e или %f fmt.Printf("%s\n", str) // строка fmt.Printf("%q\n", str) // строка в двойных кавычках, с экранированием как в Go fmt.Printf("%p\n", ptr) // представление указателя (адрес в памяти) fmt.Printf("%c\n", rune) // символ (руна) соответствующий данному коду Unicode fmt.Printf("%t\n", boo) // логическое значение (true или false) // Использование флагов для управления шириной и точностью вывода fmt.Printf("%9d\n", num) // число будет выведено с шириной в 9 символов fmt.Printf("%-9d\n", num) // число будет выведено с шириной в 9 символов и выравниванием по левому краю fmt.Printf("%09d\n", num) // число будет выведено с шириной в 9 символов и лидирующими нулями fmt.Printf("%.2f\n", flt) // число с плавающей точкой будет выведено с двумя знаками после запятой fmt.Printf("%6.2f\n", flt) // число с плавающей точкой будет выведено с шириной в 6 символов, из которых два знака после запятой } |