mirror of
https://github.com/golang/go.git
synced 2024-09-30 14:57:10 +00:00
minor improvement to formatting: don't allocate padding strings every time.
R=rsc https://golang.org/cl/164090
This commit is contained in:
parent
272d156357
commit
d984f98996
@ -8,12 +8,22 @@ import (
|
||||
"strconv";
|
||||
)
|
||||
|
||||
const (
|
||||
nByte = 64;
|
||||
nPows10 = 160;
|
||||
|
||||
const nByte = 64
|
||||
const nPows10 = 160
|
||||
ldigits = "0123456789abcdef";
|
||||
udigits = "0123456789ABCDEF";
|
||||
)
|
||||
|
||||
var ldigits string = "0123456789abcdef" // var not const because we take its address
|
||||
var udigits string = "0123456789ABCDEF"
|
||||
const padZeros = "0000000000000000000000000000000000000000000000000000000000000000"
|
||||
const padSpaces = " "
|
||||
|
||||
func init() {
|
||||
if len(padZeros) != nByte || len(padSpaces) != nByte {
|
||||
panic("fmt padding wrong length")
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Fmt is the raw formatter used by Printf etc. Not meant for normal use.
|
||||
@ -125,22 +135,19 @@ func (f *Fmt) pad(s string) {
|
||||
w = -w;
|
||||
}
|
||||
w -= len(s);
|
||||
padchar := byte(' ');
|
||||
padding := padSpaces;
|
||||
if left && f.zero {
|
||||
padchar = '0'
|
||||
padding = padZeros
|
||||
}
|
||||
if w > 0 {
|
||||
if w > nByte {
|
||||
w = nByte
|
||||
}
|
||||
buf := make([]byte, w);
|
||||
for i := 0; i < w; i++ {
|
||||
buf[i] = padchar
|
||||
}
|
||||
padding = padding[0:w];
|
||||
if left {
|
||||
s = string(buf) + s
|
||||
s = padding + s
|
||||
} else {
|
||||
s = s + string(buf)
|
||||
s += padding
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user