在调试处理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),},
]
我找到了a github ticket to add pretty-printing of time.Time
values到Delve。在获得批准和发布之前,我该怎么做才能理解这些值并将其转换为更易读的形式?
作为一种解决方法,我考虑添加将根据需要使用.String()
或.Format(...)
的输出更新的字符串类型的新变量。有更好的选择吗?