mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
database/sql: add NullInt32
It is common for database integers to be represented as int32 internally. Although NullInt64 is already defined, this should remove some type casts and make working with those eaiser. For #31231 Change-Id: Ia0c37ecef035fee0734c1d1fb6f58aef6905cf5e Reviewed-on: https://go-review.googlesource.com/c/go/+/174178 Run-TryBot: Daniel Theophanes <kardianos@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
8ef45cf60b
commit
2177bfb343
3 changed files with 43 additions and 0 deletions
|
|
@ -234,6 +234,32 @@ func (n NullInt64) Value() (driver.Value, error) {
|
|||
return n.Int64, nil
|
||||
}
|
||||
|
||||
// NullInt32 represents an int32 that may be null.
|
||||
// NullInt32 implements the Scanner interface so
|
||||
// it can be used as a scan destination, similar to NullString.
|
||||
type NullInt32 struct {
|
||||
Int32 int32
|
||||
Valid bool // Valid is true if Int32 is not NULL
|
||||
}
|
||||
|
||||
// Scan implements the Scanner interface.
|
||||
func (n *NullInt32) Scan(value interface{}) error {
|
||||
if value == nil {
|
||||
n.Int32, n.Valid = 0, false
|
||||
return nil
|
||||
}
|
||||
n.Valid = true
|
||||
return convertAssign(&n.Int32, value)
|
||||
}
|
||||
|
||||
// Value implements the driver Valuer interface.
|
||||
func (n NullInt32) Value() (driver.Value, error) {
|
||||
if !n.Valid {
|
||||
return nil, nil
|
||||
}
|
||||
return int64(n.Int32), nil
|
||||
}
|
||||
|
||||
// NullFloat64 represents a float64 that may be null.
|
||||
// NullFloat64 implements the Scanner interface so
|
||||
// it can be used as a scan destination, similar to NullString.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue