Go: Print with fmt cheat sheet


A format specifier is a string that contains the text you want to format plus some placeholders, called verbs, that tell the functions in the fmt package how to format your arguments.

In this example:

fmt.Printf("Hex: %x.\n", 255) // Output: "Hex: ff."
  • the format specifier is "Hex: %x.\n",
  • the verb %x formats 255 in base 16 notation, and
  • the special value \n is a line feed.

Use the special verb %%, which consumes no argument, to write a literal percent sign:

fmt.Printf("%d %%", 50) // Output: "50 %"

Generic formatting

Argument: []int{1, 2}

Formatting Description Verb
[1 2] Default format %v
[]int{1, 2} Go-syntax format %#v
[]int The type of the value %T


Argument: 109

Formatting Description Verb
109 Base 10 %d
+109 Always show sign %+d
␣109 Width 4, right justify %4d
109␣ Width 4, left justify %-4d
0109 Width 4, pad with zero %04d
m Character %c
'm' Quoted character %q
1101101 Base 2 %b
155 Base 8 %o
6d Base 16, lowercase %x
6D Base 16, uppercase %X
0x6d Base 16, with leading 0x %#x
U+006D Unicode %U
U+006D 'm' Unicode with character %#U


Use %t to format a boolean as true or false.


Use %p to format a pointer in base 16 notation with leading 0x.


Argument: 123.456

Formatting Description Verb
1.234560e+02 Scientific notation %e
123.456000 Decimal point, no exponent %f
123.46 Default width, precision 2 %.2f
␣␣123.46 Width 8, precision 2 %8.2f
123.456 Exponent as needed, necessary digits only %g

String or byte slice

Argument: "café"

Formatting Description Verb
café Plain string %s
␣␣café Width 6, right justify %6s
café␣␣ Width 6, left justify %-6s
"café" Quoted string %q
636166c3a9 Hex dump of byte values %x
63 61 66 c3 a9 Hex dump with spaces % x

Special values

Value Description
\a U+0007 alert or bell
\b U+0008 backspace
\f U+000C form feed
\n U+000A line feed or newline
\r U+000D carriage return
\t U+0009 horizontal tab
\v U+000b vertical tab
\\ U+005c backslash

Arbitrary values can be encoded with backslash escapes. There are four different formats:

  • \x followed by exactly two hexadecimal digits;
  • \ followed by exactly three octal digits.
  • \u followed by exactly four hexadecimal digits;
  • \U followed by exactly eight hexadecimal digits;

The escapes \u and \U represent Unicode code points.

These special values can be used in any "" string literal:

fmt.Println("\\caf\u00e9") // Output: \café