格式化 I/O

通用

  1. %v the value in a default format
  2. when printing structs, the plus flag (%+v) adds field names
  3. %#v a Go-syntax representation of the value
  4. %T a Go-syntax representation of the type of the value
  5. %% a literal percent sign; consumes no value

Boolean

  1. %t the word true or false

Integer:

  1. %c the character represented by the corresponding Unicode code point
  2. %d base 10
  3. %o base 8
  4. %O base 8 with 0o prefix
  5. %q a single-quoted character literal safely escaped with Go syntax.
  6. %x base 16, with lower-case letters for a-f
  7. %X base 16, with upper-case letters for A-F
  8. %U Unicode format: U+1234; same as "U+%04X"

Floating-point and complex constituent

  1. %b decimalless scientific notation with exponent a power of two,
  2. in the manner of strconv.FormatFloat with the 'b' format,
  3. e.g. -123456p-78
  4. %e scientific notation, e.g. -1.234456e+78
  5. %E scientific notation, e.g. -1.234456E+78
  6. %f decimal point but no exponent, e.g. 123.456
  7. %F synonym for %f
  8. %g %e for large exponents, %f otherwise. Precision is discussed below.
  9. %G %E for large exponents, %F otherwise
  10. %x hexadecimal notation (with decimal power of two exponent), e.g. -0x1.23abcp+20
  11. %X upper-case hexadecimal notation, e.g. -0X1.23ABCP+20

String and slice of bytes

  1. %s the uninterpreted bytes of the string or slice
  2. %q a double-quoted string safely escaped with Go syntax
  3. %x base 16, lower-case, two characters per byte
  4. %X base 16, upper-case, two characters per byte

Slice

  1. %p address of 0th element in base 16 notation, with leading 0x

Pointer:

  1. %p base 16 notation, with leading 0x
  2. The %b, %d, %o, %x and %X verbs also work with pointers,
  3. formatting the value exactly as if it were an integer.

精度

  1. %f default width, default precision
  2. %9f width 9, default precision
  3. %.2f default width, precision 2
  4. %9.2f width 9, precision 2
  5. %9.f width 9, precision 0

其他标志

  1. + always print a sign for numeric values;
  2. guarantee ASCII-only output for %q (%+q)
  3. - pad with spaces on the right rather than the left (left-justify the field)
  4. # alternate format: add leading 0b for binary (%#b), 0 for octal (%#o),
  5. 0x or 0X for hex (%#x or %#X); suppress 0x for %p (%#p);
  6. for %q, print a raw (backquoted) string if strconv.CanBackquote
  7. returns true;
  8. always print a decimal point for %e, %E, %f, %F, %g and %G;
  9. do not remove trailing zeros for %g and %G;
  10. write e.g. U+0078 'x' if the character is printable for %U (%#U).
  11. ' ' (space) leave a space for elided sign in numbers (% d);
  12. put spaces between bytes printing strings or slices in hex (% x, % X)
  13. 0 pad with leading zeros rather than spaces;
  14. 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.

方法