Skip to content

Instantly share code, notes, and snippets.

@ivanzoid
Last active January 12, 2019 12:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ivanzoid/30827930b59d265ca8085335125af228 to your computer and use it in GitHub Desktop.
Save ivanzoid/30827930b59d265ca8085335125af228 to your computer and use it in GitHub Desktop.
package main
import "strconv"
func interfaceToFloat(value interface{}) float64 {
if value == nil {
return 0.0
}
switch typedValue := value.(type) {
case float64:
return typedValue
case float32:
return float64(typedValue)
case int:
return float64(typedValue)
case uint:
return float64(typedValue)
case string:
floatValue, _ := strconv.ParseFloat(typedValue, 10)
return floatValue
default:
return 0.0
}
}
func interfaceToString(value interface{}) string {
switch typedValue := value.(type) {
case string:
return typedValue
default:
return ""
}
}
func interfaceToInt64(value interface{}) int64 {
if value == nil {
return 0
}
switch typedValue := value.(type) {
case int64:
return typedValue
case int8:
return int64(typedValue)
case int16:
return int64(typedValue)
case int32:
return int64(typedValue)
case uint8:
return int64(typedValue)
case uint16:
return int64(typedValue)
case uint32:
return int64(typedValue)
case int:
return int64(typedValue)
case uint:
return int64(typedValue)
default:
return 0
}
}
func interfaceToArray(value interface{}) []interface{} {
if value == nil {
return make([]interface{}, 0)
}
switch typedValue := value.(type) {
case []interface{}:
return typedValue
default:
return make([]interface{}, 0)
}
}
func interfaceToMap(value interface{}) map[interface{}]interface{} {
if value == nil {
return make(map[interface{}]interface{}, 0)
}
switch typedValue := value.(type) {
case map[interface{}]interface{}:
return typedValue
default:
return make(map[interface{}]interface{})
}
}
func interfaceArrayToStringsArray(args []interface{}) []string {
result := make([]string, len(args), len(args))
for _, arg := range args {
s := interfaceToString(arg)
if len(s) != 0 {
result = append(result, s)
}
}
return result
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment