格式化 I/O
通用
%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
Boolean
%t the word true or false
Integer:
%c the character represented by the corresponding Unicode code point
%d base 10
%o base 8
%O base 8 with 0o prefix
%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"
Floating-point and complex constituent
%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. Precision is discussed below.
%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
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
Slice
%p address of 0th element in base 16 notation, with leading 0x
Pointer:
%p base 16 notation, with leading 0x
The %b, %d, %o, %x and %X verbs also work with pointers,
formatting the value exactly as if it were an integer.
精度
%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
其他标志
+ 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)
0 pad with leading zeros rather than spaces;
for numbers, this moves the padding after the sign
输入
Scan, Scanf and Scanln read from os.Stdin; Fscan, Fscanf and Fscanln read from a specified io.Reader; Sscan, Sscanf and Sscanln read from an argument string.
方法
- func Errorf(format string, a …interface{}) error
- func Fprint(w io.Writer, a …interface{}) (n int, err error)
- func Fprintf(w io.Writer, format string, a …interface{}) (n int, err error)
- func Fprintln(w io.Writer, a …interface{}) (n int, err error)
- func Fscan(r io.Reader, a …interface{}) (n int, err error)
- func Fscanf(r io.Reader, format string, a …interface{}) (n int, err error)
- func Fscanln(r io.Reader, a …interface{}) (n int, err error)
- func Print(a …interface{}) (n int, err error)
- func Printf(format string, a …interface{}) (n int, err error)
- func Println(a …interface{}) (n int, err error)
- func Scan(a …interface{}) (n int, err error)
- func Scanf(format string, a …interface{}) (n int, err error)
- func Scanln(a …interface{}) (n int, err error)
- func Sprint(a …interface{}) string
- func Sprintf(format string, a …interface{}) string
- func Sprintln(a …interface{}) string
- func Sscan(str string, a …interface{}) (n int, err error)
- func Sscanf(str string, format string, a …interface{}) (n int, err error)
- func Sscanln(str string, a …interface{}) (n int, err error)