В языке программирования 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 символов, из которых два знака после запятой } |