github.com/jackc/pgx/v5@v5.5.5/pgtype/zeronull/float8.go (about) 1 package zeronull 2 3 import ( 4 "database/sql/driver" 5 6 "github.com/jackc/pgx/v5/pgtype" 7 ) 8 9 type Float8 float64 10 11 func (Float8) SkipUnderlyingTypePlan() {} 12 13 // ScanFloat64 implements the Float64Scanner interface. 14 func (f *Float8) ScanFloat64(n pgtype.Float8) error { 15 if !n.Valid { 16 *f = 0 17 return nil 18 } 19 20 *f = Float8(n.Float64) 21 22 return nil 23 } 24 25 func (f Float8) Float64Value() (pgtype.Float8, error) { 26 if f == 0 { 27 return pgtype.Float8{}, nil 28 } 29 return pgtype.Float8{Float64: float64(f), Valid: true}, nil 30 } 31 32 // Scan implements the database/sql Scanner interface. 33 func (f *Float8) Scan(src any) error { 34 if src == nil { 35 *f = 0 36 return nil 37 } 38 39 var nullable pgtype.Float8 40 err := nullable.Scan(src) 41 if err != nil { 42 return err 43 } 44 45 *f = Float8(nullable.Float64) 46 47 return nil 48 } 49 50 // Value implements the database/sql/driver Valuer interface. 51 func (f Float8) Value() (driver.Value, error) { 52 if f == 0 { 53 return nil, nil 54 } 55 return float64(f), nil 56 }