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  }