package help type intConverter func(interface{}) int64 func getIntConverter(data interface{}) intConverter { switch data.(type) { case (int): return func(i interface{}) int64 { return int64(i.(int)) } case (int8): return func(i interface{}) int64 { return int64(i.(int8)) } case (int16): return func(i interface{}) int64 { return int64(i.(int16)) } case (int32): return func(i interface{}) int64 { return int64(i.(int32)) } } return func(i interface{}) int64 { return i.(int64) } } type uintConverter func(interface{}) uint64 func getUIntConverter(data interface{}) uintConverter { switch data.(type) { case (uint): return func(i interface{}) uint64 { return uint64(i.(uint)) } case (uint8): return func(i interface{}) uint64 { return uint64(i.(uint8)) } case (uint16): return func(i interface{}) uint64 { return uint64(i.(uint16)) } case (uint32): return func(i interface{}) uint64 { return uint64(i.(uint32)) } } return func(i interface{}) uint64 { return i.(uint64) } } type floatConverter func(interface{}) float64 func getFloatConverter(data interface{}) floatConverter { switch data.(type) { case (float32): return func(i interface{}) float64 { return float64(i.(float32)) } } return func(i interface{}) float64 { return i.(float64) } }