1
0
mirror of https://github.com/golang/go synced 2024-11-12 06:20:22 -07:00

time: remove Time.FormatAppend

undo CL 8478044 / 0d28fd55e721

Lack of consensus.

««« original CL description
time: add Time.FormatAppend

This is a version of Time.Format that doesn't require allocation.

Fixes #5192
Update #5195

R=r
CC=gobot, golang-dev
https://golang.org/cl/8478044
»»»

R=r
CC=golang-dev
https://golang.org/cl/9462049
This commit is contained in:
Brad Fitzpatrick 2013-05-21 14:32:09 -07:00
parent 6f5af9c0b1
commit 509a1173a3

View File

@ -380,22 +380,6 @@ func (t Time) String() string {
// about the formats and the definition of the reference time, see the
// documentation for ANSIC and the other constants defined by this package.
func (t Time) Format(layout string) string {
const bufSize = 64
var b []byte
max := len(layout) + 10
if max <= bufSize {
var buf [bufSize]byte
b = buf[:0]
} else {
b = make([]byte, 0, max)
}
b = t.FormatAppend(layout, b)
return string(b)
}
// FormatAppend works like Format but appends the textual
// representation to b and returns the extended buffer.
func (t Time) FormatAppend(layout string, b []byte) []byte {
var (
name, offset, abs = t.locabs()
@ -405,7 +389,16 @@ func (t Time) FormatAppend(layout string, b []byte) []byte {
hour int = -1
min int
sec int
b []byte
buf [64]byte
)
max := len(layout) + 10
if max <= len(buf) {
b = buf[:0]
} else {
b = make([]byte, 0, max)
}
// Each iteration generates one std value.
for layout != "" {
prefix, std, suffix := nextStdChunk(layout)
@ -553,7 +546,7 @@ func (t Time) FormatAppend(layout string, b []byte) []byte {
b = formatNano(b, uint(t.Nanosecond()), std>>stdArgShift, std&stdMask == stdFracSecond9)
}
}
return b
return string(b)
}
var errBad = errors.New("bad value for field") // placeholder not passed to user