Go предлагает отличную поддержку форматирования строк
с помощью printf . Вот несколько примеров типичных
задач форматирования строк.
|
|
|
|
|
|
|
type point struct {
x, y int
}
|
|
|
Go предлагает несколько “глаголов” созданных для
форматирования общих Go значений. Например,
это выведет инстанс нашей point структуры.
|
p := point{1, 2}
fmt.Printf("%v\n", p)
|
Если значение является структурой, запись %+v
выведет названия полей структуры.
|
|
Вариант %#v печатает синтаксическое представление
Go, то есть фрагмент исходного кода, который будет
генерировать это значение.
|
|
Для вывода типа значения, используйте %T .
|
|
Форматирование логических значений не вызывает затруднений.
|
|
Возможно большое количество опций для форматирования
целых чисел. Используйте %d для стандартного,
десятеричного вывода.
|
|
Бинарный вывод
|
|
Вывод символа, соответсвующего заданному числу.
|
|
%x - шестнадцатиричное значение.
|
|
Так же есть несколько вариантов форматирования
чисел с плавающей точкой. Стандартный вывод %f .
|
|
%e и %E приводит числло с плавающей точкой
к экспоненциальному представлению.
|
fmt.Printf("%e\n", 123400000.0)
fmt.Printf("%E\n", 123400000.0)
|
Для стандартного вывода строк используйте %s .
|
fmt.Printf("%s\n", "\"string\"")
|
Для двойных ковычек как в исходниках Go, используйте %q .
|
fmt.Printf("%q\n", "\"string\"")
|
Так же как и с целочисленными ранее, %x отображает
строку в виде шестнадцатеричного исчисления, с двумя
символами вывода за каждый байт ввода.
|
fmt.Printf("%x\n", "hex this")
|
Чтобы вывести ссылку на указатель, используйте %p .
|
|
При форматировании чисел вам часто захочется
контролировать ширину и точность получаемого значения.
Чтобы указать ширину целого числа, используйте
число после % . По-умолчанию результат будет
выровнен по правому краю и дополнен пробелами.
|
fmt.Printf("|%6d|%6d|\n", 12, 345)
|
Вы также можете указать ширину чисел с плавающей точкой,
также вы можете ограничить десятичную точность
одновременно с помощью синтаксиса ширина.точность .
|
fmt.Printf("|%6.2f|%6.2f|\n", 1.2, 3.45)
|
Для выравнивания по левому краю используйте флаг - .
|
fmt.Printf("|%-6.2f|%-6.2f|\n", 1.2, 3.45)
|
Вы также можете контролировать ширину при форматировании
строк, особенно для обеспечения их выравнивания в табличном
выводе. Стандартное выравнивание по правому краю.
|
fmt.Printf("|%6s|%6s|\n", "foo", "b")
|
Для выравнивания по левому краю используйте флаг - .
|
fmt.Printf("|%-6s|%-6s|\n", "foo", "b")
|
До сих пор мы видели Printf , который печатает
отформатированную строку в os.Stdout . Sprintf
форматирует и возвращает строку, нигде не печатая.
|
s := fmt.Sprintf("a %s", "string")
fmt.Println(s)
|
Вы можете отформатировать+вывести в io.Writers , используя
Fprintf .
|
fmt.Fprintf(os.Stderr, "an %s\n", "error")
}
|