mirror of
https://github.com/metabarcoding/obitools4.git
synced 2025-06-29 16:20:46 +00:00
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
|
package obiutils
|
||
|
|
||
|
// CastableToInt checks if the given input can be casted to an integer.
|
||
|
//
|
||
|
// i: the value to check for castability.
|
||
|
// bool: true if the value can be casted to an integer, false otherwise.
|
||
|
func CastableToInt(i interface{}) bool {
|
||
|
switch i.(type) {
|
||
|
case int,
|
||
|
int8, int16, int32, int64,
|
||
|
float32, float64,
|
||
|
uint8, uint16, uint32, uint64:
|
||
|
return true
|
||
|
default:
|
||
|
return false
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// InterfaceToBool converts an interface value to a boolean.
|
||
|
//
|
||
|
// It takes an interface{} as a parameter and returns a boolean value and an error.
|
||
|
func InterfaceToBool(i interface{}) (val bool, err error) {
|
||
|
|
||
|
err = nil
|
||
|
val = false
|
||
|
|
||
|
switch t := i.(type) {
|
||
|
case int:
|
||
|
val = t != 0
|
||
|
case int8:
|
||
|
val = t != 0 // standardizes across systems
|
||
|
case int16:
|
||
|
val = t != 0 // standardizes across systems
|
||
|
case int32:
|
||
|
val = t != 0 // standardizes across systems
|
||
|
case int64:
|
||
|
val = t != 0 // standardizes across systems
|
||
|
case float32:
|
||
|
val = t != 0 // standardizes across systems
|
||
|
case float64:
|
||
|
val = t != 0 // standardizes across systems
|
||
|
case uint8:
|
||
|
val = t != 0 // standardizes across systems
|
||
|
case uint16:
|
||
|
val = t != 0 // standardizes across systems
|
||
|
case uint32:
|
||
|
val = t != 0 // standardizes across systems
|
||
|
case uint64:
|
||
|
val = t != 0 // standardizes across systems
|
||
|
default:
|
||
|
err = &NotABoolean{"value attribute cannot be casted to a boolean"}
|
||
|
}
|
||
|
return
|
||
|
}
|