GORM 的默认 go struct 里面的指针成员变量怎么理解呢

2020-01-31 14:41:57 +08:00
 lhx2008

https://github.com/jinzhu/gorm/blob/master/model.go

type Model struct {
	ID        uint `gorm:"primary_key"`
	CreatedAt time.Time
	UpdatedAt time.Time
	DeletedAt *time.Time `sql:"index"`
}

CreatedAt 和 UpdatedAt 都是非指针,DeletedAt 用了指针,这后面应该怎么理解呢

2306 次点击
所在节点    问与答
4 条回复
jingniao
2020-01-31 14:46:13 +08:00
指针允许空吧,不是指针的是非空
tairan2006
2020-01-31 15:34:43 +08:00
1 楼正解,time.Time 的默认值是 0000-00-00
chotow
2020-01-31 16:52:09 +08:00
举个例子,以 JSON 格式打印一个零值结构体时,非指针的结果是默认值,指针是 null。
这是一个点,还有的就是赋值写入等,可以再摸一下文档。
snoooow
2020-02-02 17:02:52 +08:00
结构体中的零值不会出现在 gorm 构造的查询条件中,但指针例外。然后删除一般是软删除,DeletedAt 字段初始为零值,删除之后会有值。把 DeletedAt 弄成指针,查询的时候就会自然带上 DeletedAt == nil,就能查到未删除的数据,而 CreatedAt 和 UpdatedAt 没有这种需求。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/641184

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX