如何在DataStore中存储* time.Time类型的struct字段的当前时间?

时间:2019-06-11 11:52:03

标签: go

根据我的要求,我创建了一个结构体--

type MyRule struct {
   CreatedAt    time.Time  `json:"createdAt" datastore:"createdAt,noindex"`
   UpdatedAt    *time.Time  `json:"updatedAt" datastore:"updatedAt,noindex"`
}

对于createdAt字段,我可以将当​​前时间存储为-

MyRule.CreatedAt = time.Now()

但是,同一时间无法将当前时间存储在updatedAt结构的MyRule字段中,因为它的类型是*time.Time而不是time.Time。 在这里,我无法更改updatedAt的字段类型,因为创建任何规则时,*time.Time允许我接受nil作为updatedAt的值。

如果我尝试这样做-

 MyRule.UpdatedAt = time.Now()

它给我下面的错误-

 cannot use time.Now()(type time.Time) as type *time.Time in assignment

如何在* time.Time类型而不是time.Time类型的updatedAt字段中存储当前时间值

1 个答案:

答案 0 :(得分:1)

注意:无法获得返回值的地址,所以这样的操作将 起作用:

MyRule.UpdatedAt = &time.Now() // compile fail

要获取值的地址,该值必须位于可寻址的项目中。因此,将值分配给变量,如下所示:

t := time.Now()
MyRule.UpdatedAt = &t