OSDN Git Service

libgo: Update to weekly.2011-12-06.
[pf3gnuchains/gcc-fork.git] / libgo / go / fmt / doc.go
index 6713f0a..11e9f19 100644 (file)
        If an operand implements interface Formatter, that interface
        can be used for fine control of formatting.
 
-       Next, if an operand implements the error interface, the Error method
+       If the format (which is implicitly %v for Println etc.) is valid
+       for a string (%s %q %v %x %X), the following two rules also apply:
+
+       1. If an operand implements the error interface, the Error method
        will be used to convert the object to a string, which will then
        be formatted as required by the verb (if any).
 
-       Finally, if an operand implements method String() string that method
+       2. If an operand implements method String() string, that method
        will be used to convert the object to a string, which will then
        be formatted as required by the verb (if any).
+
        To avoid recursion in cases such as
-               type X int
-               func (x X) String() string { return Sprintf("%d", x) }
-       cast the value before recurring:
-               func (x X) String() string { return Sprintf("%d", int(x)) }
+               type X string
+               func (x X) String() string { return Sprintf("<%s>", x) }
+       convert the value before recurring:
+               func (x X) String() string { return Sprintf("<%s>", string(x)) }
 
        Format errors: