mirror of https://github.com/golang/go.git
fmt: explain how Formatter interface affects verbs and flags
Formatter is mentioned further down, but it's helpful
to add it amongst the verbs and flags.
Background: I spent a while puzzling how "%+v" prints
a stack trace for github.com/pkg/errors when this isn't
documented under 'flags'.
Change-Id: Ic70145902a36780147dedca568b3cf482974fc38
GitHub-Last-Rev: 6571b499f2
GitHub-Pull-Request: golang/go#39860
Reviewed-on: https://go-review.googlesource.com/c/go/+/240000
Reviewed-by: Rob Pike <r@golang.org>
Trust: Rob Pike <r@golang.org>
Trust: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
e08059f4fc
commit
076a45acd5
|
|
@ -150,7 +150,8 @@
|
|||
concrete value that it holds, and printing continues with the next rule.
|
||||
|
||||
2. If an operand implements the Formatter interface, it will
|
||||
be invoked. Formatter provides fine control of formatting.
|
||||
be invoked. In this case the interpretation of verbs and flags is
|
||||
controlled by that implementation.
|
||||
|
||||
3. If the %v verb is used with the # flag (%#v) and the operand
|
||||
implements the GoStringer interface, that will be invoked.
|
||||
|
|
|
|||
|
|
@ -47,11 +47,11 @@ type State interface {
|
|||
Flag(c int) bool
|
||||
}
|
||||
|
||||
// Formatter is the interface implemented by values with a custom formatter.
|
||||
// The implementation of Format may call Sprint(f) or Fprint(f) etc.
|
||||
// to generate its output.
|
||||
// Formatter is implemented by any value that has a Format method.
|
||||
// The implementation controls how State and rune are interpreted,
|
||||
// and may call Sprint(f) or Fprint(f) etc. to generate its output.
|
||||
type Formatter interface {
|
||||
Format(f State, c rune)
|
||||
Format(f State, verb rune)
|
||||
}
|
||||
|
||||
// Stringer is implemented by any value that has a String method,
|
||||
|
|
|
|||
Loading…
Reference in New Issue