sensu-telegram-handler/vendor/github.com/sensu/sensu-go/js/toint64.go

96 lines
1.3 KiB
Go

package js
// do whatever it takes to get an int64
func toInt64(value interface{}) int64 {
if value == nil {
return 0
}
switch v := value.(type) {
case int:
return int64(v)
case int8:
return int64(v)
case int16:
return int64(v)
case int32:
return int64(v)
case int64:
return int64(v)
case uint:
return int64(v)
case uint8:
return int64(v)
case uint16:
return int64(v)
case uint32:
return int64(v)
case uint64:
return int64(v)
case float32:
return int64(v)
case float64:
return int64(v)
case *int:
if v == nil {
return 0
}
return int64(*v)
case *int8:
if v == nil {
return 0
}
return int64(*v)
case *int16:
if v == nil {
return 0
}
return int64(*v)
case *int32:
if v == nil {
return 0
}
return int64(*v)
case *int64:
if v == nil {
return 0
}
return int64(*v)
case *uint:
if v == nil {
return 0
}
return int64(*v)
case *uint8:
if v == nil {
return 0
}
return int64(*v)
case *uint16:
if v == nil {
return 0
}
return int64(*v)
case *uint32:
if v == nil {
return 0
}
return int64(*v)
case *uint64:
if v == nil {
return 0
}
return int64(*v)
case *float32:
if v == nil {
return 0
}
return int64(*v)
case *float64:
if v == nil {
return 0
}
return int64(*v)
}
return 0
}