mirror of
https://github.com/golang/go
synced 2024-11-18 03:04:45 -07:00
time: don't panic stringifying the zero Month
Fixes #17720 Change-Id: Ib95c230deef3934db729856c17908f8e5a1e2b7f Reviewed-on: https://go-review.googlesource.com/33145 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Rob Pike <r@golang.org>
This commit is contained in:
parent
e0aedfb496
commit
a18b4b3fb9
@ -114,7 +114,18 @@ var months = [...]string{
|
||||
}
|
||||
|
||||
// String returns the English name of the month ("January", "February", ...).
|
||||
func (m Month) String() string { return months[m-1] }
|
||||
func (m Month) String() string {
|
||||
if January <= m && m <= December {
|
||||
return months[m-1]
|
||||
}
|
||||
const prefix = "%!Month("
|
||||
buf := make([]byte, 20+len(prefix)+1)
|
||||
buf[len(buf)-1] = ')'
|
||||
n := fmtInt(buf[:len(buf)-1], uint64(m))
|
||||
n -= len(prefix)
|
||||
copy(buf[n:], prefix)
|
||||
return string(buf[n:])
|
||||
}
|
||||
|
||||
// A Weekday specifies a day of the week (Sunday = 0, ...).
|
||||
type Weekday int
|
||||
|
@ -1230,3 +1230,10 @@ func TestMarshalBinaryZeroTime(t *testing.T) {
|
||||
t.Errorf("t0=%#v\nt1=%#v\nwant identical structures", t0, t1)
|
||||
}
|
||||
}
|
||||
|
||||
// Issue 17720: Zero value of time.Month fails to print
|
||||
func TestZeroMonthString(t *testing.T) {
|
||||
if got, want := Month(0).String(), "%!Month(0)"; got != want {
|
||||
t.Errorf("zero month = %q; want %q", got, want)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user