V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhuzhiqiang
V2EX  ›  程序员

小弟上周接触了 GO 在封装 ORM 过程中 有个疑问 请教大佬

  •  
  •   zhuzhiqiang ·
    zhuzhiqiang18 · 2019-08-14 15:34:16 +08:00 · 2548 次点击
    这是一个创建于 800 天前的主题,其中的信息可能已经有所发展或是发生改变。
    GO 没有 null,初始值都会给一个零值, 数据库中有 null 值该怎么处理? 一般情况怎么处理呢? 我现在封装的 orm 都是给了一个零值( int = 0 string =“” Time = time.Time{}) 约定大于配置?
    轮子 https://github.com/zhuzhiqiang18/go_web_curd
    12 条回复    2019-08-15 13:35:32 +08:00
    SuperMild
        1
    SuperMild   2019-08-14 15:36:42 +08:00
    自己做轮子?可以参考 gorm 之类的是怎么做的。
    iuoui
        2
    iuoui   2019-08-14 15:40:02 +08:00   ❤️ 1
    时间 mysql.NullTime
    其他类型 sql.NullInt64 sql.NullString 等等
    另外推荐一个库,github.com/guregu/null
    这个库做了 json 处理,比较方便
    zhuzhiqiang
        3
    zhuzhiqiang   2019-08-14 15:41:17 +08:00
    @SuperMild 刚刚知道了这个框架 谢大佬
    zhuzhiqiang
        4
    zhuzhiqiang   2019-08-14 15:41:40 +08:00
    @iuoui 那这样的话 结构体的字段 就不能用基本类型了吧
    StarkWhite
        5
    StarkWhite   2019-08-14 18:34:09 +08:00
    Go 没有 null,但有 nil 啊
    cuvii
        6
    cuvii   2019-08-14 18:41:06 +08:00
    @zhuzhiqiang 可以参考下 gorm 的处理。gorm 里字段定义成指针类型的话,是可以在 mysql 中设置为 null 的
    fuckshit
        7
    fuckshit   2019-08-14 19:34:06 +08:00
    为什么要自己造轮子呢? gorm 不好用吗
    zhuzhiqiang
        8
    zhuzhiqiang   2019-08-14 19:43:50 +08:00
    @fuckshit 我上周刚接触 GO 看到数据库部分 就顺手封装了 也是才知道这个框架 [逃跑]
    zhuzhiqiang
        9
    zhuzhiqiang   2019-08-14 19:44:05 +08:00
    @cuvii 好的 谢大佬
    mlboy
        10
    mlboy   2019-08-15 04:06:23 +08:00 via iPhone
    开源吗
    fuckshit
        11
    fuckshit   2019-08-15 09:41:39 +08:00
    @zhuzhiqiang gorm xorm 都是挺好的 golang orm 框架, 但是我还是比较喜欢 gorm。
    reus
        12
    reus   2019-08-15 13:35:32 +08:00
    用指针
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2296 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 13:08 · PVG 21:08 · LAX 06:08 · JFK 09:08
    ♥ Do have faith in what you're doing.