【发布时间】:2017-07-30 05:05:04
【问题描述】:
我正在尝试在将使用 JSON 进行编码/解码的结构中使用 time.Time 结构。如果未设置 time.Time 属性(omitempty 标记),则不应包含它们,因此为了能够这样做,我必须使用指向 time.Time 对象的指针。
我已经为 time.Time 结构定义了一个类型,因此我可以轻松地创建接收器函数,格式为 JSON 编码和解码等时间。
在此处查看代码:https://play.golang.org/p/e81xzA-dzz
所以在我的主要结构(实际上将被编码的结构)中,我会做这样的事情:
type EncodeThis struct {
Str string `json:"str,omitempty"`
Date *jWDate `json:"date,omitempty"`
}
问题是指针可能是 nil,在尝试解码值时,所以如果你在 Go 操场上查看我的代码,你可以看到我正在尝试(使用双指针)设置地址如果它为零,则接收者的。参见方法“Set”和“swap”。
但是,这似乎不起作用。该程序没有失败或任何事情,但“EncodeThis”结构将不包含对这个新地址的引用。有什么办法可以解决这个问题吗?
【问题讨论】:
-
您的游乐场不完整。请将其修复为可编译状态。
-
问题在于它的数千行代码,以及很多依赖项。问题出在方法 Set 上,此时接收者指针为 nil。我需要在 Set 方法中为其分配内存或重新分配地址。但我不知道该怎么做。或者如果它真的可能。最坏的情况是我需要在创建时为它们创建内存,但是将它作为指针是没有用的。
-
我有个主意。请看我的回答,我相信它会有所帮助。