Golang: Printf Verbs

By Xah Lee. Date: . Last updated: .

The fmt.Println function supports many verbs (aka placeholder formats). [see Golang: Print]

Here's a complete list of them.

General:

%v
the value in a default format. when printing structs, the plus flag (%+v) adds field names
%#v
a Go-syntax representation of the value
%T
a Go-syntax representation of the type of the value
%%
a literal percent sign; consumes no value

Boolean:

%t
the word true or false

Integer:

%b
base 2
%c
the character represented by the corresponding Unicode Codepoint
%d
base 10
%o
base 8
%O
base 8 with 0o prefix
%q
a single-quoted character literal safely escaped with Go syntax.
%x
base 16, with lower-case letters for a-f
%X
base 16, with upper-case letters for A-F
%U
Unicode format: U+1234; same as "U+%04X"

Floating-point and complex constituents:

%b
decimalless scientific notation with exponent a power of two, in the manner of strconv.FormatFloat with the 'b' format, e.g -123456p-78
%e
scientific notation, e.g. -1.234456e+78
%E
scientific notation, e.g. -1.234456E+78
%f
decimal point but no exponent, e.g. 123.456
%F
synonym for %f
%g
%e for large exponents, %f otherwise. Precision is discussed below.
%G
%E for large exponents, %F otherwise
%x
hexadecimal notation (with decimal power of two exponent), e.g. -0x1.23abcp+20
%X
upper-case hexadecimal notation, e.g. -0X1.23ABCP+20

String and slice of bytes (treated equivalently with these verbs):

%s
the uninterpreted bytes of the string or slice
%q
a double-quoted string safely escaped with Go syntax
%x
base 16, lower-case, two characters per byte
%X
base 16, upper-case, two characters per byte

Slice:

%p
address of 0th element in base 16 notation, with leading 0x

Pointer:

%p
base 16 notation, with leading 0x
The %b, %d, %o, %x and %X verbs also work with pointers,
%b, %d, %o, %x and %X verbs also work with pointers,
formatting the value exactly as if it were an integer.
atting the value exactly as if it were an integer.

The default format for %v is:

For compound objects, the elements are printed using these rules, recursively, laid out like this:

Width is specified by an optional decimal number immediately preceding the verb. If absent, the width is whatever is necessary to represent the value. Precision is specified after the (optional) width by a period followed by a decimal number. If no period is present, a default precision is used. A period with no following number specifies a precision of zero. Examples:

Reference

https://pkg.go.dev/fmt

Golang Print