Go Package fmt: Difference between revisions
(→%v) |
|||
Line 12: | Line 12: | ||
The conversion characters are also known as '''placeholders'''. | The conversion characters are also known as '''placeholders'''. | ||
===<tt>%v</tt>=== | ===<tt>%v</tt>=== | ||
Render the value as string in the default format. It is a catch-all placeholder, "v" stands for "value". | Render the value as string in the default format. It is a catch-all placeholder, "v" stands for "value". It can be used to print any value, including arrays, slices, structs and maps. For maps, the Printf functions sort the output lexicographically by key. | ||
"%v" and <code>fmt.Errorf()</code> is typically used in the error handling idiom that involves [[Go_Language_Error_Handling#Annotate_the_Error|error annotation]]. | "%v" and <code>fmt.Errorf()</code> is typically used in the error handling idiom that involves [[Go_Language_Error_Handling#Annotate_the_Error|error annotation]]. |
Revision as of 23:20, 30 August 2024
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 placeholder, "v" stands for "value". It can be used to print any value, including arrays, slices, structs and maps. For maps, the Printf functions sort the output lexicographically by key.
"%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: