How to use fmt.Sprintf Function in Go
Created
Modified
Basics
Package fmt implements formatted I/O with functions analogous to C's printf and scanf. The format 'verbs' are derived from C's but are simpler.
fmt.Sprintf
Sprintf formats according to a format specifier and returns the resulting string.
// func Sprintf(format string, a ...interface{}) string
s := fmt.Sprintf("Apple iOS %s", "15.4")
// floating-point number
s := fmt.Sprintf("Apple iOS %f", 15.4)
// any value
s := fmt.Sprintf("Apple iOS %v", 15.4)
Apple iOS 15.4 Apple iOS 15.400000 Apple iOS 15.4
fmt.Printf
Printf formats according to a format specifier and writes to standard output. It returns the number of bytes written and any write error encountered.
// func Printf(format string, a ...interface{}) (n int, err error)
fmt.Printf("Apple iOS %s\n", "15.4")
Apple iOS 15.4
The verbs
Printf has over a dozen such conversions, which Go programmers call verbs.
The verbs:
%vthe value in a default format when printing structs, the plus flag (%+v) adds field names%#va Go-syntax representation of the value%Ta Go-syntax representation of the type of the value%%a literal percent sign; consumes no value%tthe word true or false%bbase 2%cthe character represented by the corresponding Unicode code point%dbase 10%obase 8%Obase 8 with 0o prefix%qa single-quoted character literal safely escaped with Go syntax.%xbase 16, with lower-case letters for a-f%Xbase 16, with upper-case letters for A-F%UUnicode format: U+1234; same as "U+%04X"%bdecimalless scientific notation with exponent a power of two, in the manner of strconv.FormatFloat with the 'b' format, e.g. -123456p-78%escientific notation, e.g. -1.234456e+78%Escientific notation, e.g. -1.234456E+78%fdecimal point but no exponent, e.g. 123.456%Fsynonym for %f%g %e for large exponents, %f otherwise. Precision is discussed below.%G %E for large exponents, %F otherwise%xhexadecimal notation (with decimal power of two exponent), e.g. -0x1.23abcp+20%Xupper-case hexadecimal notation, e.g. -0X1.23ABCP+20%sthe uninterpreted bytes of the string or slice%qa double-quoted string safely escaped with Go syntax%xbase 16, lower-case, two characters per byte%Xbase 16, upper-case, two characters per byte%fdefault width, default precision%9fwidth 9, default precision%.2fdefault width, precision 2%9.2fwidth 9, precision 2%9.fwidth 9, precision 0+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 0b for binary (%#b), 0 for octal (%#o), 0x or 0X for hex (%#x or %#X); suppress 0x for %p (%#p); for %q, print a raw (backquoted) string if strconv.CanBackquote returns true; always print a decimal point for %e, %E, %f, %F, %g and %G; do not remove trailing zeros for %g and %G; write e.g. U+0078 'x' if the character is printable for %U (%#U).' '(space) leave a space for elided sign in numbers (% d); put spaces between bytes printing strings or slices in hex (% x, % X)0pad with leading zeros rather than spaces; for numbers, this moves the padding after the sign