Go Package fmt
External
Internal
Formatting
A format string, or a template, is text interspersed with conversion characters.
Conversion Characters
The conversion characters are also known as placeholders.
%v
Render the value as string in the default format. It is a catch-all
"%v" and fmt.Errorf()
is typically used in the error handling idiom that involves error annotation.
%+v
When printing structs, the plus flag %+v
adds field names.
%#v
A Go-syntax representation of the value.
%#v
can be used to show that an error
instance returned by errors.New("something")
is a pointer:
&errors.errorString{s:"something"}
%T
A Go-syntax representation of the type of the value.
%%
A literal percent sign. Consumes no value.
Strings
color := "blue"
fmt.Printf("The color is %s\n", color)
%q
Prints a double-quoted string safely escaped with Go syntax.
Integers
size := 1
fmt.Printf("The size is %d\n", size)
%q
Prints a a single-quoted character literal, which is the interpretation of the given int, safely escaped with Go syntax.
c := 10
fmt.Printf("%q", c)
will print:
'\n'
Characters
c := 'x'
fmt.Printf("The character is %c\n", c)
Booleans
b := true
fmt.Printf("The boolean value is %t\n", b)
Floating Point Numbers
%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 := 1.0
fmt.Printf("The floating point value is %f\n", f)
Limit the number of decimals:
fmt.Printf("The floating point value is %.2f\n", f)
If the number of decimals comes as a variable, see Numerical Value Part of the Conversion Character as Argument of the Function below.
%F
Synonym for %f.
%g
%e for large exponents, %f otherwise.
%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
%w
Used with fmt.Errorf()
to wrap errors.
Pointers
Structs
Padding
Leading Zero Padding for Integers
i := 7
s := fmt.Sprintf("%06d", i) // will produce 000007 (five zeroes)
If the number of padding characters comes as a variable, see Numerical Value Part of the Conversion Character as Argument of the Function below.
Leading Space Padding for Integer
i := 7
s := fmt.Sprintf("%6d", i) // will produce ' 7' (five spaces)
If the number of padding characters comes as a variable, see Numerical Value Part of the Conversion Character as Argument of the Function below.
String Padding
Left:
fmt.Sprintf("%10s", "test")
Right:
fmt.Sprintf("%-10s", "test")
Padding quantity specified as parameter of the function (also see Numerical Value Part of the Conversion Character as Argument of the Function below):
fmt.Sprintf("%*s", 10, "test")
Numerical Value part of the Conversion Character as Argument of the Function
If the number of padding characters or other configurable value in a conversion character is variable, the following *
syntax can be used:
zeroPaddingCount := 4
i := 1
fmt.Printf("%0*d", zeroPaddingCount, i) // will print 0001
If the value passed as 'zeroPaddingCount' is 0, no padding is done.
Functions
Sprintf()
Format a string and returns it as a result:
message := fmt.Sprintf("Hi, %v. Welcome!", name)
For more details on the format string, see:
Printf(), Println()
Scanf(), Scanln()
Errorf()
Fprintf()
The Fprintf()
function can be used to print to stderr
.
if cnt, err := fmt.Fprintf(os.Stderr, "%s\n", "something"); err != nil {
panic(err)
} else {
...
}
Interfaces
fmt.Stringer
type Stringer interface {
String() string
}
Stringer
is implemented by any type that has a String()
method, which defines the "native" format for that value. The String()
method is used to print values passed as an operand to any format that accepts a string or to an unformatted printer such as Print
. For a usage example, see: