Following formatting can be used with fmt.Printf as well as fmt.Sprintf:
// String and slice of bytes %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 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // Boolean %t // the word true or false // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // 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 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // Integer %b // base 2 %c // the character represented by the corresponding Unicode code point %d // base 10 %o // base 8 %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" // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // The default format for %v bool // %t int, int8 // %d uint, uint8 // %d, %x if printed with %#v float32, complex64 // %g string // %s chan // %p pointer // %p // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // 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 %G // %E for large exponents, %F otherwise // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // Floating-point Precision %f // default width, default precision %9f // width 9, default precision %.2f // default width, precision 2 %9.2f // width 9, precision 2 %9.f // width 9, precision 0 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // Pointer %p // base 16 notation, with leading 0x // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // Other flags + // always print a sign for numeric values; guarantee ASCII-only output for %q (%+q). - // pad with spaces on the right rather than the left (left-justify the field). # // alternate format: add leading 0 for octal (%#o), 0x for hex (%#x); 0X for hex (%#X); suppress 0x for %p (%#p); for %q, print a raw (backquoted) string if strconv.CanBackquote returns true; ' ' (space) // leave a space for elided sign in numbers (% d); put spaces between bytes printing strings or slices in hex (% x, % X). 0 // pad with leading zeros rather than spaces; for numbers, this moves the padding after the sign.