Golang Go语言中方案咨询,用指针类型*T好还是用第三方库

如之前的帖子 https://www.v2ex.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 } 大家觉得哪个好一些


Golang Go语言中方案咨询,用指针类型*T好还是用第三方库
5 回复

我用指针,多引一个库就多一份麻烦,判断指针理解成本也很低,出 nil 没判断就用会 panic ,用库有人嫌麻烦就不判断反而掩盖了错误

更多关于Golang Go语言中方案咨询,用指针类型*T好还是用第三方库的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html




如果只是处理数据库 null 字段,标准库有对应的结构体,无需引入三方库

用指针 对反射来讲更友好

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

在Golang(Go语言)中,选择使用指针类型 *T 还是第三方库,主要取决于具体的应用场景和需求。

指针类型 *T 是Go语言内建的特性,它允许你直接操作变量的内存地址,这在需要高效内存管理和直接修改数据结构时非常有用。例如,在大型数据结构(如链表、树等)的操作中,使用指针可以避免数据的深拷贝,从而提高性能和减少内存使用。此外,指针还常用于实现接口和回调函数,因为它们允许函数修改调用者的数据。

然而,第三方库往往提供了更高级、更抽象的功能和接口,这些功能可能你自己实现起来既复杂又容易出错。使用第三方库可以节省开发时间,提高代码的可维护性和可读性。例如,对于并发编程,使用像 sync 这样的标准库或像 golang.org/x/sync 这样的第三方库,可以更容易地实现线程安全和高效的并发操作。

在选择时,建议考虑以下几点:

  1. 性能需求:如果需要高性能和低内存占用,指针可能是更好的选择。
  2. 开发效率:如果时间紧迫且第三方库能满足需求,使用库可以更快地完成开发。
  3. 代码可读性:使用库通常能提高代码的可读性,但也要确保库的文档清晰且社区活跃。
  4. 依赖管理:引入第三方库会增加项目的依赖,需要考虑依赖的维护和更新成本。

综上所述,选择指针还是第三方库应根据具体需求进行权衡。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!