При отладке программы, которая обрабатывает time.Time
значений, мне нужно иметь возможность печатать значения и понимать их.В Delve, если я печатаю переменную типа time.Time
, она печатает внутреннюю структуру объекта и не позволяет мне запускать time.Time
методы для объекта.
Как мне понять эту структуру и перевести ее в мое обычное понимание того, что будет напечатано функциями Unix()
, UnixNano()
или String()
.
Например:
$ dlv test
(dlv) b calendar.go:200
(dlv) p appt
time.Time {
wall: 0,
ext: 63673770600,
loc: *time.Location {
name: "Local",
zone: []time.zone len: 4, cap: 4, [
(*time.zone)(0xc0000a8100),
],
tx: []time.zoneTrans len: 235, cap: 235, [
(*time.zoneTrans)(0xc0000bb000),
...+171 more
],
cacheStart: 1520751600,
cacheEnd: 1541311200,
cacheZone: *(*time.zone)(0xc0000a8100),},}
Или в случае списка значений:
(dlv) p dates
[]time.Time len: 2, cap: 2, [
{
wall: 0,
ext: 63673689600,
loc: *(*time.Location)(0xc00008e9c0),},
{
wall: 0,
ext: 63673776000,
loc: *(*time.Location)(0xc00008ea80),},
]
Я нашел билет GitHub для добавления симпатичной печати time.Time
значений вникатьПока это не утверждено и не выпущено, что я могу сделать, чтобы понять эти значения и перевести их в более читаемую форму?
В качестве обходного пути я рассмотрел добавление новых переменных строкового типа, которые я бы обновил (какнеобходимо) с выводом .String()
или .Format(...)
.Есть ли лучшая альтернатива?