Форматированный вывод
Ряд возможностей для вывода и не только предоставляет пакет fmt. До этого мы использовали только Print
и Println
. Однако, бывают ситуации, когда нам понадобится вывести, допустим у числа float64 только 2 знака после запятой. Подобные операции удобно делать через функцию Printf:
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Pi)
fmt.Printf("%.2f", math.Pi)
}
Для чисел с плавающей точкой можно указать точность или количество символов в дробной части. Для этого количество символов указывается после точки: %.2f
означает, что выведутся только две цифры после точки. Существуют и другие варианты форматирования чисел с плавающей точкой:
%f
: точность и ширина значения по умолчанию%5f
: ширина - 5 символов и точность по умолчанию%.2f
: ширина по умолчанию и точность - 2 символа%5.2f
: ширина - 5, точность - 2%5.f
: ширина - 5, точность - 0
%f
- один из многих спейификаторов форматирования. Существуют множество других спецификаторов, каждый из которых представляет набор символов, которые интерпретируются определенным образом и обозначаются занком процента %
. Примеры спецификаторова следующие:
%t
: для вывода значений типа bool (true
илиfalse
)%b
: для вывода целых чисел в двоичной системе%c
: для вывода символов, представленных числовым кодом%d
: для вывода целых чисел в десятичной системе (int)%o
: для вывода целых чисел в восьмеричной системе%q
: для вывода символов в одинарных кавычках%x
: для вывода целых чисел в шестнадцатиричной системе, буквенные символы числа имеют нижний регистр a-f%X
: для вывода целых чисел в шестнадцатиричной системе, буквенные символы числа имеют верхний регистр A-F%U
: для вывода символов в формате кодов Unicode, например, U+1234%e
: для вывода чисел с плавающей точкой в экспоненциальном представлении, например, -1.234456e+78%E
: для вывода чисел с плавающей точкой в экспоненциальном представлении, например, -1.234456E+78%f
: для вывода чисел с плавающей точкой, например, 123.456%F
: аналог%f
%s
: для вывода строки%p
: дла вывода значения укзателя (шестнадцатиричного адреса)
Существет и универсальный спецификатор %v
, который для типа bool аналогичен %t
, для целочисленных типов - %d
, для чисел с плавающей точной - %g
, для строк - %s
.
Примеры использования:
package main
import "fmt"
func main() {
var BigNumInt int64 = 100500
var BigNumFloat float64 = 100500.100500
var word string = "word"
fmt.Printf("This is a big num integer: %d\n", BigNumInt)
fmt.Printf("This is a cut version of big num float: %.2f\n", BigNumFloat)
fmt.Printf("This is just a word: %s", word)
}