经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Go语言 » 查看文章
go语言的null值问题
来源:cnblogs  作者:千军万马o  时间:2018/10/29 9:55:43  对本文有异议

关于go语言数据库存储和显示null值的问题困扰了我很久,并且也和群友讨论过这个问题,但是都没有得到相对满意和全面的答案。最近FQ找了几篇相对详细和权威的文章,分享给大家,希望和大家一起进步,go go go!

 

文章一:Go语言:解决数据库中null值的问题(转载国人文章)

 

文章二:How I handled possible null values from database rows in Golang?(需科学上网)

 

文章三:Working effectively with database nulls(试验过不需要科学上网)

 

Github:有没有专门的null值函数库?

 

https://github.com/guregu/null介绍

import "gopkg.in/guregu/null.v3"

null是一个具有合理选项的库,用于处理可空的SQL和JSON值

有两个包: null及其子包zero

null类型仅在null输入时被视为null,并且JSON将编码为null如果您需要零并且null被视为单独的值,请使用这些值。

zero中的类型在Go中被视为零值:空字符串输入将生成空零zero.String ,并且空字符串将JSON编码为""这些类型的零值将被视为对SQL无效。 如果你需要零和null处理相同,使用这些。

所有类型都实现了sql.Scannerdriver.Valuer ,因此您可以使用此库代替sql.NullXXX所有类型还实现: encoding.TextMarshalerencoding.TextUnmarshalerjson.Marshalerjson.Unmarshaler

null包

import "gopkg.in/guregu/null.v3"

null.String

可以为空的字符串。

如果SQL源数据为空,则Marshals为JSON null。 零(空白)输入不会产生空字符串。 可以从sql.NullString JSON输入或字符串输入解sql.NullString

null.Int

可以为null的int64。

如果SQL源数据为空,则Marshals为JSON null。 零输入不会产生null Int。 可以从sql.NullInt64 JSON输入解sql.NullInt64

null.Float

可空浮动64。

如果SQL源数据为空,则Marshals为JSON null。 零输入不会产生null Float。 可以从sql.NullFloat64 JSON输入解sql.NullFloat64

null.Bool

可空的布尔。

如果SQL源数据为空,则Marshals为JSON null。 虚假输入不会产生null Bool。 可以从sql.NullBool JSON输入解sql.NullBool

null.Time

如果SQL源数据为空,则Marshals为JSON null。 使用time.Time的封送者。 可以从pq.NullTime和类似的JSON输入解pq.NullTime

零包装

import "gopkg.in/guregu/null.v3/zero"

zero.String

可以为空的字符串。

如果为null,将Marshal编排为空字符串。 空字符串输入生成空字符串。 空值和零值被认为是等价的。 可以从sql.NullString JSON输入解sql.NullString

zero.Int

可以为null的int64。

如果为null,将Marshal编排为0。 0产生一个空Int。 空值和零值被认为是等价的。 可以从sql.NullInt64 JSON输入解sql.NullInt64

zero.Float

可空浮动64。

如果为null,将Marshal编排为0。 0.0产生一个null Float。 空值和零值被认为是等价的。 可以从sql.NullFloat64 JSON输入解sql.NullFloat64

zero.Bool

可空的布尔。

如果为null,将Marshal编排为false。 false产生一个null Float。 空值和零值被认为是等价的。 可以从sql.NullBool JSON输入解sql.NullBool

zero.Time

如果为null,将Marshal编排为零时间。 使用time.Time的封送者。 可以从pq.NullTime和类似的JSON输入解pq.NullTime

错误

json",omitempty"结构标记现在无法正常工作。 它永远不会省略null或空String。 这可能最终会得到解决

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号