lhx2008
V2EX  ›  问与答

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

  •  
  •   lhx2008 · Jan 31, 2020 · 2953 views
    This topic created in 2320 days ago, the information mentioned may be changed or developed.

    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 用了指针,这后面应该怎么理解呢

    4 replies    2020-02-02 17:02:52 +08:00
    jingniao
        1
    jingniao  
       Jan 31, 2020 via Android   ❤️ 2
    指针允许空吧,不是指针的是非空
    tairan2006
        2
    tairan2006  
       Jan 31, 2020 via Android   ❤️ 1
    1 楼正解,time.Time 的默认值是 0000-00-00
    chotow
        3
    chotow  
       Jan 31, 2020 via iPhone
    举个例子,以 JSON 格式打印一个零值结构体时,非指针的结果是默认值,指针是 null。
    这是一个点,还有的就是赋值写入等,可以再摸一下文档。
    snoooow
        4
    snoooow  
       Feb 2, 2020   ❤️ 1
    结构体中的零值不会出现在 gorm 构造的查询条件中,但指针例外。然后删除一般是软删除,DeletedAt 字段初始为零值,删除之后会有值。把 DeletedAt 弄成指针,查询的时候就会自然带上 DeletedAt == nil,就能查到未删除的数据,而 CreatedAt 和 UpdatedAt 没有这种需求。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2824 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 15:19 · PVG 23:19 · LAX 08:19 · JFK 11:19
    ♥ Do have faith in what you're doing.