如之前的帖子 https://www.fshex.com/t/1063998#reply2 我用 gin 框架搭建了一个开箱即用的 api 框架,
现在问题是 db 里面字段可能为 null ,当用 gorm 查询结果的时候如果不好区分是 golang 默认的 0 值,还是 db 里面存储的是 null ,如
type User struct {
        Name string
    Age int
},当然使用
type User struct {
        Name string
    Age *int
}也能解决问题
github 发现一个库 https://github.com/guregu/null ,也能很好的解决
type User struct {
        Name string
    Age null.Int
},看着也稍微优雅一些,但是使用的时候可能比较麻烦

user : = XXXX
if user.Age.Valid {
        // todo something
}
大家觉得哪个好一些
举报· 40 次点击
登录 注册 站外分享
4 条回复  
sunny352787 小成 2024-9-1 14:20:15
我用指针,多引一个库就多一份麻烦,判断指针理解成本也很低,出 nil 没判断就用会 panic ,用库有人嫌麻烦就不判断反而掩盖了错误
body007 初学 2024-9-1 19:00:20
https://i.imgur.com/VZa9Rcw.png

如果只是处理数据库 null 字段,标准库有对应的结构体,无需引入三方库
james122333 初学 2024-9-2 02:32:24

golang 方案咨询,用指针类型*T 好还是用第三方库

用指针 对反射来讲更友好
griffinx 小成 2024-9-2 14:18:49

golang 方案咨询,用指针类型*T 好还是用第三方库

用指针来表示不存在是很常见的做法,比如 yaml/json 都可以这么搞
返回顶部