Осмысление значений `time.Time` при отладке в Delve - PullRequest
0 голосов
/ 25 сентября 2018

При отладке программы, которая обрабатывает 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(...).Есть ли лучшая альтернатива?

...