go语言的null值问题
关于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.Scanner和driver.Valuer ,因此您可以使用此库代替sql.NullXXX 。 所有类型还实现: encoding.TextMarshaler , encoding.TextUnmarshaler , json.Marshaler和json.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。 这可能最终会得到解决 。
go语言的null值问题的更多相关文章
- 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结
为什么说JAVA中要慎重使用继承 这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型 1.返回顶部 1. Nullable value types (C# reference) 2019 ...
- C/C++编程笔记:C语言NULL值和数字 0 值区别及NULL详解
在学习C语言的时候,我们常常会碰到C语言NULL值和数字 0 ,很多小伙伴搞不清楚他们之间的一个区别,今天我们就了解一下他们之间的区别,一起来看看吧! 先看下面一段代码输出什么: 输出<null ...
- 奇妙的NULL值,你知道多少
<NULL值的多义性分析> 谈到NULL值,很多人都是很熟悉,但是深入了解后,又感觉到陌生,对其含义和用法,都无法很准确的理解.NULL在数据库和编程语言中,存在的意义和附带的含义不同. ...
- Swift:消除Null值
由于在现代编程语言中这个无所不在的概念,许多程序猿可能倾向于相信null值是一个必须存在的瑕疵,创建一个没有它的编程语言是不可能的.他们可能会惊奇那些许多没有null值活的也很好的语言,这带来的结果就 ...
- sql server 2008 NULL值
SQL支持用NULL符号来表示缺少的值,它使用的是三值谓词逻辑,计算结果可是以TURE.FALSE或UNKNOWN. SQL中不同语言元素处理NULL和UNKNOWN的方式也有所不同,如果逻辑表达式只 ...
- 关于程序null值的见解
今天遇到了一个问题,查询一条数据,返回用list接,发现少了2个值(ssh框架).执行SQL少的这两个字段的值为null.上图说明一下: 可以看到第一次查询没有角标38.39的值. 是同一条SQL,第 ...
- R语言计算IV值
更多大数据分析.建模等内容请关注公众号<bigdatamodeling> 在对变量分箱后,需要计算变量的重要性,IV是评估变量区分度或重要性的统计量之一,R语言计算IV值的代码如下: Ca ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:bool
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:bool 1.返回顶部 1. bool(C# 参考) 2015/07/20 bool 关键字是 System.Boolean ...
随机推荐
- Marriage Match II(二分+并查集+最大流,好题)
Marriage Match II http://acm.hdu.edu.cn/showproblem.php?pid=3081 Time Limit: 2000/1000 MS (Java/Othe ...
- Java实现聚类算法k-means
2016-07 java简单实现聚类算法 但是有一个小问题,,,,我其实每次迭代之后(就是达不到我的收敛标准之前,聚类中心的误差达不到指定小的时候),虽然重新算了聚类中心,但是其实我的那些点并没有变, ...
- 证书吊销列表(CRL)介绍
一.证书吊销列表(CRL) 证书吊销列表 (Certificate Revocation List ,简称: CRL) 是 PKI 系统中的一个结构化数据文件,该文件包含了证书颁发机构 (CA) 已经 ...
- 我的UI启蒙之路
为什么叫UI启蒙之路呢? 我没有学过美术,也不懂设计,但是有的时候也许就是一种命中注定吧,让我知道了UI,并且一发不可收拾的爱上了它. 具体情况是这样的: 我毕业于电力学校,是一名不折不扣的工科生,专 ...
- distinct group by 去重查询
select * from dc_restaurants; 31 select DISTINCT (restaurant_name),id from dc_restaurants ; 31 (会按照 ...
- 转录组差异表达分析工具Ballgown
Ballgown是分析转录组差异表达的R包. 软件安装: 运行R, source(“http://bioconductor.org/biocLite.R”) biocLite(“ballgown”) ...
- Phantomjs 生成多页PDF
开篇 最近使用 Phantomjs 生成PDF,其中遇到一些问题,导致PDF生成失败,如出现空白文件或一页数据量太大,都是由于没有设置好格式导致.特别是分页问题,感觉资料很少,除了在 StackOve ...
- 201.09.22 除虫药水(线性dp)
描述 在十年前,除虫是十分艰苦的工作.那时,使用普通药水进行除虫的效果极差,在一片苹果 林中使用后除掉的虫仅为极小一部分. 比如说,Bugs 镇共有 N 片苹果林,对第i 片使用普通药水可以除掉 ai ...
- 2018.08.06bzoj1251: 序列终结者(非旋treap)
传送门 平衡树板子题. 直接fhqtreap打区间标记就行了. 代码: #include<bits/stdc++.h> #define N 50005 using namespace st ...
- hdu-1131(卡特兰数+大数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1131 思路:R(x)=h(x)*n!=C(n,2*n)*n!=A(n+2,n*2); #include ...