github.com/best4tires/kit@v1.0.5/convert/bool.go (about) 1 package convert 2 3 import "database/sql" 4 5 // ToBool tries to convert v into an int 6 func ToBool(v interface{}) bool { 7 switch v := v.(type) { 8 case int: 9 return v != 0 10 case int8: 11 return v != 0 12 case int16: 13 return v != 0 14 case int32: 15 return v != 0 16 case int64: 17 return v != 0 18 case uint8: 19 return v != 0 20 case uint16: 21 return v != 0 22 case uint32: 23 return v != 0 24 case uint64: 25 return v != 0 26 case float32: 27 return v != 0 28 case float64: 29 return v != 0 30 case bool: 31 return v 32 case string: 33 switch v { 34 case "true", "1", "True", "t", "T", "on", "On", "yes", "Yes": 35 return true 36 default: 37 return false 38 } 39 40 case sql.NullString: 41 return ToBool(v.String) 42 case sql.NullInt64: 43 return ToBool(v.Int64) 44 case sql.NullInt32: 45 return ToBool(v.Int32) 46 case sql.NullInt16: 47 return ToBool(v.Int16) 48 case sql.NullFloat64: 49 return ToBool(v.Float64) 50 case sql.NullBool: 51 return ToBool(v.Bool) 52 case sql.NullTime: 53 return ToBool(v.Time) 54 case *sql.NullString: 55 return ToBool(v.String) 56 case *sql.NullInt64: 57 return ToBool(v.Int64) 58 case *sql.NullInt32: 59 return ToBool(v.Int32) 60 case *sql.NullInt16: 61 return ToBool(v.Int16) 62 case *sql.NullFloat64: 63 return ToBool(v.Float64) 64 case *sql.NullBool: 65 return ToBool(v.Bool) 66 case *sql.NullTime: 67 return ToBool(v.Time) 68 69 default: 70 return false 71 } 72 }