mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 07:38:48 +00:00
Amend fmt documentation
This commit is contained in:
+18
-15
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
package fmt implemented formatted I/O with procedures similar to C's printf and Python's format.
|
package fmt implements formatted I/O with procedures similar to C's printf and Python's format.
|
||||||
The format 'verbs' are derived from C's but simpler.
|
The format 'verbs' are derived from C's but simpler.
|
||||||
|
|
||||||
Printing
|
Printing
|
||||||
@@ -33,6 +33,8 @@ Floating-point, complex numbers, and quaternions:
|
|||||||
%E scientific notation, e.g. -1.23456E+78
|
%E scientific notation, e.g. -1.23456E+78
|
||||||
%f decimal point but no exponent, e.g. 123.456
|
%f decimal point but no exponent, e.g. 123.456
|
||||||
%F synonym for %f
|
%F synonym for %f
|
||||||
|
%g synonym for %f with default maximum precision
|
||||||
|
%G synonym for %g
|
||||||
%h hexadecimal (lower-case) representation with 0h prefix (0h01234abcd)
|
%h hexadecimal (lower-case) representation with 0h prefix (0h01234abcd)
|
||||||
%H hexadecimal (upper-case) representation with 0H prefix (0h01234ABCD)
|
%H hexadecimal (upper-case) representation with 0H prefix (0h01234ABCD)
|
||||||
%m number of bytes in the best unit of measurement, e.g. 123.45mib
|
%m number of bytes in the best unit of measurement, e.g. 123.45mib
|
||||||
@@ -61,9 +63,9 @@ For compound values, the elements are printed using these rules recursively; lai
|
|||||||
bit sets {key0 = elem0, key1 = elem1, ...}
|
bit sets {key0 = elem0, key1 = elem1, ...}
|
||||||
pointer to above: &{}, &[], &map[]
|
pointer to above: &{}, &[], &map[]
|
||||||
|
|
||||||
Width is specified by an optional decimal number immediately preceding the verb.
|
Width is specified by an optional decimal number immediately after the '%'.
|
||||||
If not present, the width is whatever is necessary to represent the value.
|
If not present, the width is whatever is necessary to represent the value.
|
||||||
Precision is specified after the (optional) width followed by a period followed by a decimal number.
|
Precision is specified after the (optional) width by a period followed by a decimal number.
|
||||||
If no period is present, a default precision is used.
|
If no period is present, a default precision is used.
|
||||||
A period with no following number specifies a precision of 0.
|
A period with no following number specifies a precision of 0.
|
||||||
|
|
||||||
@@ -75,7 +77,7 @@ Examples:
|
|||||||
%8.f width 8, precision 0
|
%8.f width 8, precision 0
|
||||||
|
|
||||||
Width and precision are measured in units of Unicode code points (runes).
|
Width and precision are measured in units of Unicode code points (runes).
|
||||||
n.b. C's printf uses units of bytes
|
n.b. C's printf uses units of bytes.
|
||||||
|
|
||||||
|
|
||||||
Other flags:
|
Other flags:
|
||||||
@@ -92,7 +94,7 @@ Other flags:
|
|||||||
0 pad with leading zeros rather than spaces
|
0 pad with leading zeros rather than spaces
|
||||||
|
|
||||||
|
|
||||||
Flags are ignored by verbs that don't expect them
|
Flags are ignored by verbs that don't expect them.
|
||||||
|
|
||||||
|
|
||||||
For each printf-like procedure, there is a print function that takes no
|
For each printf-like procedure, there is a print function that takes no
|
||||||
@@ -105,19 +107,20 @@ Explicit argument indices:
|
|||||||
In printf-like procedures, the default behaviour is for each formatting verb to format successive
|
In printf-like procedures, the default behaviour is for each formatting verb to format successive
|
||||||
arguments passed in the call. However, the notation [n] immediately before the verb indicates that
|
arguments passed in the call. However, the notation [n] immediately before the verb indicates that
|
||||||
the nth zero-index argument is to be formatted instead.
|
the nth zero-index argument is to be formatted instead.
|
||||||
The same notation before an '*' for a width or precision selecting the argument index holding the value.
|
The same notation before an '*' for a width or precision specifier selects the argument index
|
||||||
Python-like syntax with argument indices differs for the selecting the argument index: {N:v}
|
holding the value.
|
||||||
|
Python-like syntax with argument indices differs for selecting the argument index: {n:v}
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
fmt.printf("%[1]d %[0]d\n", 13, 37); // C-like syntax
|
fmt.printfln("%[1]d %[0]d", 13, 37) // C-like syntax
|
||||||
fmt.printf("{1:d} {0:d}\n", 13, 37); // Python-like syntax
|
fmt.printfln("{1:d} {0:d}", 13, 37) // Python-like syntax
|
||||||
prints "37 13", whilst:
|
prints "37 13", whilst:
|
||||||
fmt.printf("%[2]*.[1]*[0]f\n", 17.0, 2, 6); // C-like syntax
|
fmt.printfln("%*[2].*[1][0]f", 17.0, 2, 6) // C-like syntax
|
||||||
fmt.printf("%{0:[2]*.[1]*f}\n", 17.0, 2, 6); // Python-like syntax
|
fmt.printfln("{0:*[2].*[1]f}", 17.0, 2, 6) // Python-like syntax
|
||||||
equivalent to:
|
is equivalent to:
|
||||||
fmt.printf("%6.2f\n", 17.0, 2, 6); // C-like syntax
|
fmt.printfln("%6.2f", 17.0) // C-like syntax
|
||||||
fmt.printf("{:6.2f}\n", 17.0, 2, 6); // Python-like syntax
|
fmt.printfln("{:6.2f}", 17.0) // Python-like syntax
|
||||||
prints "17.00"
|
and prints "17.00".
|
||||||
|
|
||||||
Format errors:
|
Format errors:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user