博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go语言的null值问题
阅读量:5133 次
发布时间:2019-06-13

本文共 1840 字,大约阅读时间需要 6 分钟。

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

 

文章一:

 

文章二:

 

文章三:

 

Github:

 

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。 这可能会得到 。

转载于:https://www.cnblogs.com/joyswings/p/9864568.html

你可能感兴趣的文章
Java Content Repository API 简介 转自(https://www.ibm.com/developerworks/cn/java/j-jcr/)
查看>>
visio二次开发——图纸解析
查看>>
Activity之间的跳转:
查看>>
iTunes Connect 开发者上手经验(转)
查看>>
vertical-align你为什么不生效
查看>>
C++ 实践总结
查看>>
composer 国内镜像配置
查看>>
软件是天时、地利、人和的产物!
查看>>
python定时清空本目录下除本脚本外的全部文件
查看>>
【PHP】在目标字符串指定位置插入字符串
查看>>
【JS】jQuery设置定时器,访问服务器(PHP示例)配合微信、支付宝原生支付,跳转web网页...
查看>>
实验四2
查看>>
CSharpThinking---C# 要点(附加三)
查看>>
设计模式之adapter模式
查看>>
python之地基(四)
查看>>
2013总结和2014展望
查看>>
Oracle定时器执行多线程
查看>>
管理结果集和分析结果集
查看>>
Node.js(window)基础(1)——用cmd命令行访问某一文件夹下的js文件
查看>>
你离100%有多远
查看>>