• Rob Pike's avatar
    fmt.Print*: reimplement to switch on type first. · d482c163
    Rob Pike authored
    This shortens, simplifies and regularizes the code significantly.
    (Improvements to reflect could make another step.)
    Passes all.bash.
    
    One semantic change occurs: The String() method changes
    behavior. It used to run only for string formats such as %s and %q.
    Instead, it now runs whenever the item has the method and the
    result is then processed by the format as a string. Besides the
    regularization, this has three effects:
    
    	1) width is honored for String() items
    	2) %x works for String() items
    	3) implementations of String that merely recur will recur forever
    
    Regarding point 3, example from the updated documentation:
    	type X int
    	func (x X) String() string { return Sprintf("%d", x) }
    should cast the value before recurring:
    	func (x X) String() string { return Sprintf("%d", int(x)) }
    
    R=rsc
    CC=golang-dev
    https://golang.org/cl/1613045
    d482c163
Name
Last commit
Last update
doc Loading commit data...
include Loading commit data...
lib Loading commit data...
misc Loading commit data...
pkg Loading commit data...
src Loading commit data...
test Loading commit data...
.hgignore Loading commit data...
.hgtags Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
README Loading commit data...
favicon.ico Loading commit data...