• 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
..
bench Loading commit data...
bugs Loading commit data...
chan Loading commit data...
fixedbugs Loading commit data...
garbage Loading commit data...
interface Loading commit data...
ken Loading commit data...
nilptr Loading commit data...
syntax Loading commit data...
235.go Loading commit data...
64bit.go Loading commit data...
args.go Loading commit data...
arm-pass.txt Loading commit data...
assign.go Loading commit data...
assign1.go Loading commit data...
bigalg.go Loading commit data...
bigmap.go Loading commit data...
blank.go Loading commit data...
blank1.go Loading commit data...
chancap.go Loading commit data...
char_lit.go Loading commit data...
char_lit1.go Loading commit data...
closedchan.go Loading commit data...
closure.go Loading commit data...
cmp1.go Loading commit data...
cmp2.go Loading commit data...
cmp3.go Loading commit data...
cmp4.go Loading commit data...
cmp5.go Loading commit data...
cmplx.go Loading commit data...
complit.go Loading commit data...
compos.go Loading commit data...
const.go Loading commit data...
const1.go Loading commit data...
const2.go Loading commit data...
const3.go Loading commit data...
convert.go Loading commit data...
convert3.go Loading commit data...
convlit.go Loading commit data...
convlit1.go Loading commit data...
copy.go Loading commit data...
ddd.go Loading commit data...
ddd1.go Loading commit data...
ddd2.go Loading commit data...
ddd3.go Loading commit data...
decl.go Loading commit data...
declbad.go Loading commit data...
defer.go Loading commit data...
deferprint.go Loading commit data...
empty.go Loading commit data...
env.go Loading commit data...
errchk Loading commit data...
escape.go Loading commit data...
float_lit.go Loading commit data...
floatcmp.go Loading commit data...
for.go Loading commit data...
func.go Loading commit data...
func1.go Loading commit data...
func2.go Loading commit data...
func3.go Loading commit data...
func4.go Loading commit data...
func5.go Loading commit data...
gc.go Loading commit data...
gc1.go Loading commit data...
golden-arm.out Loading commit data...
golden.out Loading commit data...
hashmap.go Loading commit data...
helloworld.go Loading commit data...
if.go Loading commit data...
if1.go Loading commit data...
import.go Loading commit data...
import1.go Loading commit data...
import2.go Loading commit data...
import3.go Loading commit data...
import4.go Loading commit data...
indirect.go Loading commit data...
indirect1.go Loading commit data...
initcomma.go Loading commit data...
initialize.go Loading commit data...
initializerr.go Loading commit data...
initsyscall.go Loading commit data...
int_lit.go Loading commit data...
intcvt.go Loading commit data...
iota.go Loading commit data...
literal.go Loading commit data...
malloc1.go Loading commit data...
mallocfin.go Loading commit data...
mallocrand.go Loading commit data...
mallocrep.go Loading commit data...
mallocrep1.go Loading commit data...
map.go Loading commit data...
method.go Loading commit data...
method1.go Loading commit data...
method2.go Loading commit data...
method3.go Loading commit data...
named.go Loading commit data...
named1.go Loading commit data...
nil.go Loading commit data...
nul1.go Loading commit data...
parentype.go Loading commit data...
peano.go Loading commit data...
printbig.go Loading commit data...
range.go Loading commit data...
recover.go Loading commit data...
recover1.go Loading commit data...
recover2.go Loading commit data...
recover3.go Loading commit data...
rename.go Loading commit data...
rename1.go Loading commit data...
run Loading commit data...
run-arm Loading commit data...
runtime.go Loading commit data...
sieve.go Loading commit data...
sigchld.go Loading commit data...
simassign.go Loading commit data...
sinit.go Loading commit data...
stack.go Loading commit data...
string_lit.go Loading commit data...
stringrange.go Loading commit data...
switch.go Loading commit data...
switch1.go Loading commit data...
test0.go Loading commit data...
turing.go Loading commit data...
typeswitch.go Loading commit data...
typeswitch1.go Loading commit data...
typeswitch2.go Loading commit data...
undef.go Loading commit data...
utf.go Loading commit data...
varerr.go Loading commit data...
varinit.go Loading commit data...
vectors.go Loading commit data...
zerodivide.go Loading commit data...