关于go语言数据库存储和显示null值的问题困扰了我很久,并且也和群友讨论过这个问题,但是都没有得到相对满意和全面的答案。

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

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

nullzero
nullnull
zerozero.String""
sql.Scannerdriver.Valuersql.NullXXXencoding.TextMarshalerencoding.TextUnmarshalerjson.Marshalerjson.Unmarshaler

null包

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

null.String

可以为空的字符串。

sql.NullStringsql.NullString

null.Int

可以为null的int64。

sql.NullInt64sql.NullInt64

null.Float

可空浮动64。

sql.NullFloat64sql.NullFloat64

null.Bool

可空的布尔。

sql.NullBoolsql.NullBool

null.Time

time.Timepq.NullTimepq.NullTime

零包装

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

zero.String

可以为空的字符串。

sql.NullStringsql.NullString

zero.Int

可以为null的int64。

sql.NullInt64sql.NullInt64

zero.Float

可空浮动64。

sql.NullFloat64sql.NullFloat64

zero.Bool

可空的布尔。

falsesql.NullBoolsql.NullBool

zero.Time

time.Timepq.NullTimepq.NullTime

错误

json",omitempty"