goProject/.svn/pristine/db/dbab0e101582adb9354ba950e8d577cc223c2bea.svn-base
2025-01-06 16:21:36 +08:00

1230 lines
24 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package typeUtil
import (
"fmt"
"reflect"
"strconv"
"time"
"goutil/timeUtil"
)
// 字节数据类型转换(转换过程不是类型安全的)
// val:待转换的值
// 返回值:
// result:结果
// err:错误数据
func Byte(val interface{}) (result byte, err error) {
return Uint8(val)
}
// 字节数据类型转换(转换过程不是类型安全的)
// val:待转换的值
// 返回值:
// result:结果
// err:错误数据
func ByteArray(valArray []interface{}) (result []uint8, err error) {
return Uint8Array(valArray)
}
// 类型转换为int(转换过程不是类型安全的)
// val:待转换的值
// 返回值:
// result:结果
// err:错误数据
func Int(val interface{}) (result int, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case int:
result = int(val.(int))
case uint:
result = int(val.(uint))
case int8:
result = int(val.(int8))
case uint8:
result = int(val.(uint8))
case int16:
result = int(val.(int16))
case uint16:
result = int(val.(uint16))
case int32:
result = int(val.(int32))
case uint32:
result = int(val.(uint32))
case int64:
result = int(val.(int64))
case uint64:
result = int(val.(uint64))
case float32:
result = int(val.(float32))
case float64:
result = int(val.(float64))
case string:
var tmp int64
tmp, err = strconv.ParseInt(val.(string), 10, 64)
if err != nil {
return
}
result = int(tmp)
default:
err = fmt.Errorf("val is not base type")
}
return
}
// 转换为Int列表(转换过程不是类型安全的)
// valArray:待转换的数据列表
// 返回值:
// result:结果
// err:错误数据
func IntArray(valArray []interface{}) (result []int, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]int, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := Int(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 类型转换为int8(转换过程不是类型安全的)
// val:待转换的值
// 返回值:
// result:结果
// err:错误数据
func Int8(val interface{}) (result int8, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case int:
result = int8(val.(int))
case uint:
result = int8(val.(uint))
case int8:
result = int8(val.(int8))
case uint8:
result = int8(val.(uint8))
case int16:
result = int8(val.(int16))
case uint16:
result = int8(val.(uint16))
case int32:
result = int8(val.(int32))
case uint32:
result = int8(val.(uint32))
case int64:
result = int8(val.(int64))
case uint64:
result = int8(val.(uint64))
case float32:
result = int8(val.(float32))
case float64:
result = int8(val.(float64))
case string:
var tmp int64
tmp, err = strconv.ParseInt(val.(string), 10, 64)
if err != nil {
return
}
result = int8(tmp)
default:
err = fmt.Errorf("val is not base type")
}
return
}
// 转换为int8列表(转换过程不是类型安全的)
// valArray:待转换的数据列表
// 返回值:
// result:结果
// err:错误数据
func Int8Array(valArray []interface{}) (result []int8, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]int8, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := Int8(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 类型转换为int16(转换过程不是类型安全的)
// val:待转换的值
// 返回值:
// result:结果
// err:错误数据
func Int16(val interface{}) (result int16, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case int:
result = int16(val.(int))
case uint:
result = int16(val.(uint))
case int8:
result = int16(val.(int8))
case uint8:
result = int16(val.(uint8))
case int16:
result = int16(val.(int16))
case uint16:
result = int16(val.(uint16))
case int32:
result = int16(val.(int32))
case uint32:
result = int16(val.(uint32))
case int64:
result = int16(val.(int64))
case uint64:
result = int16(val.(uint64))
case float32:
result = int16(val.(float32))
case float64:
result = int16(val.(float64))
case string:
var tmp int64
tmp, err = strconv.ParseInt(val.(string), 10, 64)
if err != nil {
return
}
result = int16(tmp)
default:
err = fmt.Errorf("val is not base type")
}
return
}
// 转换为int16列表(转换过程不是类型安全的)
// valArray:待转换的数据列表
// 返回值:
// result:结果
// err:错误数据
func Int16Array(valArray []interface{}) (result []int16, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]int16, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := Int16(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 类型转换为int32(转换过程不是类型安全的)
// val:待转换的值
// 返回值:
// result:结果
// err:错误数据
func Int32(val interface{}) (result int32, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case int:
result = int32(val.(int))
case uint:
result = int32(val.(uint))
case int8:
result = int32(val.(int8))
case uint8:
result = int32(val.(uint8))
case int16:
result = int32(val.(int16))
case uint16:
result = int32(val.(uint16))
case int32:
result = int32(val.(int32))
case uint32:
result = int32(val.(uint32))
case int64:
result = int32(val.(int64))
case uint64:
result = int32(val.(uint64))
case float32:
result = int32(val.(float32))
case float64:
result = int32(val.(float64))
case string:
var tmp int64
tmp, err = strconv.ParseInt(val.(string), 10, 64)
if err != nil {
return
}
result = int32(tmp)
default:
err = fmt.Errorf("val is not base type")
}
return
}
// 转换为int32列表(转换过程不是类型安全的)
// valArray:待转换的数据列表
// 返回值:
// result:结果
// err:错误数据
func Int32Array(valArray []interface{}) (result []int32, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]int32, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := Int32(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 类型转换为int64(转换过程不是类型安全的)
// 返回值:
// result:结果
// err:错误数据
func Int64(val interface{}) (result int64, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case int:
result = int64(val.(int))
case uint:
result = int64(val.(uint))
case int8:
result = int64(val.(int8))
case uint8:
result = int64(val.(uint8))
case int16:
result = int64(val.(int16))
case uint16:
result = int64(val.(uint16))
case int32:
result = int64(val.(int32))
case uint32:
result = int64(val.(uint32))
case int64:
result = int64(val.(int64))
case uint64:
result = int64(val.(uint64))
case float32:
result = int64(val.(float32))
case float64:
result = int64(val.(float64))
case string:
var tmp int64
tmp, err = strconv.ParseInt(val.(string), 10, 64)
if err != nil {
return
}
result = tmp
default:
err = fmt.Errorf("val is not base type")
}
return
}
// 转换为int64列表(转换过程不是类型安全的)
// valArray:待转换的数据列表
// 返回值:
// result:结果
// err:错误数据
func Int64Array(valArray []interface{}) (result []int64, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]int64, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := Int64(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 类型转换为uint(转换过程不是类型安全的)
// val:待转换的值
// 返回值:
// result:结果
// err:错误数据
func Uint(val interface{}) (result uint, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case int:
result = uint(val.(int))
case uint:
result = uint(val.(uint))
case int8:
result = uint(val.(int8))
case uint8:
result = uint(val.(uint8))
case int16:
result = uint(val.(int16))
case uint16:
result = uint(val.(uint16))
case int32:
result = uint(val.(int32))
case uint32:
result = uint(val.(uint32))
case int64:
result = uint(val.(int64))
case uint64:
result = uint(val.(uint64))
case float32:
result = uint(val.(float32))
case float64:
result = uint(val.(float64))
case string:
var tmp uint64
tmp, err = strconv.ParseUint(val.(string), 10, 64)
if err != nil {
return
}
result = uint(tmp)
default:
err = fmt.Errorf("val is not base type")
}
return
}
// 转换为uint列表(转换过程不是类型安全的)
// valArray:待转换的数据列表
// 返回值:
// result:结果
// err:错误数据
func UintArray(valArray []interface{}) (result []uint, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]uint, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := Uint(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// uint8数据类型转换(转换过程不是类型安全的)
// val:待转换的值
// 返回值:
// result:结果
// err:错误数据
func Uint8(val interface{}) (result uint8, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case int:
result = uint8(val.(int))
case uint:
result = uint8(val.(uint))
case int8:
result = uint8(val.(int8))
case uint8:
result = uint8(val.(uint8))
case int16:
result = uint8(val.(int16))
case uint16:
result = uint8(val.(uint16))
case int32:
result = uint8(val.(int32))
case uint32:
result = uint8(val.(uint32))
case int64:
result = uint8(val.(int64))
case uint64:
result = uint8(val.(uint64))
case float32:
result = uint8(val.(float32))
case float64:
result = uint8(val.(float64))
case string:
var tmp uint64
tmp, err = strconv.ParseUint(val.(string), 10, 64)
if err != nil {
return
}
result = uint8(tmp)
default:
err = fmt.Errorf("val is not base type")
}
return
}
// uint8数据类型转换(转换过程不是类型安全的)
// val:待转换的值
// 返回值:
// result:结果
// err:错误数据
func Uint8Array(valArray []interface{}) (result []uint8, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]uint8, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := Uint8(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 类型转换为uint16(转换过程不是类型安全的)
// val:待转换的值
// 返回值:
// result:结果
// err:错误数据
func Uint16(val interface{}) (result uint16, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case int:
result = uint16(val.(int))
case uint:
result = uint16(val.(uint))
case int8:
result = uint16(val.(int8))
case uint8:
result = uint16(val.(uint8))
case int16:
result = uint16(val.(int16))
case uint16:
result = uint16(val.(uint16))
case int32:
result = uint16(val.(int32))
case uint32:
result = uint16(val.(uint32))
case int64:
result = uint16(val.(int64))
case uint64:
result = uint16(val.(uint64))
case float32:
result = uint16(val.(float32))
case float64:
result = uint16(val.(float64))
case string:
var tmp uint64
tmp, err = strconv.ParseUint(val.(string), 10, 64)
if err != nil {
return
}
result = uint16(tmp)
default:
err = fmt.Errorf("val is not base type")
}
return
}
// 转换为uint16列表(转换过程不是类型安全的)
// valArray:待转换的数据列表
// 返回值:
// result:结果
// err:错误数据
func Uint16Array(valArray []interface{}) (result []uint16, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]uint16, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := Uint16(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 类型转换为uint32(转换过程不是类型安全的)
// val:待转换的值
// 返回值:
// result:结果
// err:错误数据
func Uint32(val interface{}) (result uint32, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case int:
result = uint32(val.(int))
case uint:
result = uint32(val.(uint))
case int8:
result = uint32(val.(int8))
case uint8:
result = uint32(val.(uint8))
case int16:
result = uint32(val.(int16))
case uint16:
result = uint32(val.(uint16))
case int32:
result = uint32(val.(int32))
case uint32:
result = uint32(val.(uint32))
case int64:
result = uint32(val.(int64))
case uint64:
result = uint32(val.(uint64))
case float32:
result = uint32(val.(float32))
case float64:
result = uint32(val.(float64))
case string:
var tmp uint64
tmp, err = strconv.ParseUint(val.(string), 10, 64)
if err != nil {
return
}
result = uint32(tmp)
default:
err = fmt.Errorf("val is not base type")
}
return
}
// 转换为uint32列表(转换过程不是类型安全的)
// valArray:待转换的数据列表
// 返回值:
// result:结果
// err:错误数据
func Uint32Array(valArray []interface{}) (result []uint32, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]uint32, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := Uint32(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 类型转换为uint64(转换过程不是类型安全的)
// 返回值:
// result:结果
// err:错误数据
func Uint64(val interface{}) (result uint64, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case int:
result = uint64(val.(int))
case uint:
result = uint64(val.(uint))
case int8:
result = uint64(val.(int8))
case uint8:
result = uint64(val.(uint8))
case int16:
result = uint64(val.(int16))
case uint16:
result = uint64(val.(uint16))
case int32:
result = uint64(val.(int32))
case uint32:
result = uint64(val.(uint32))
case int64:
result = uint64(val.(int64))
case uint64:
result = uint64(val.(uint64))
case float32:
result = uint64(val.(float32))
case float64:
result = uint64(val.(float64))
case string:
var tmp uint64
tmp, err = strconv.ParseUint(val.(string), 10, 64)
if err != nil {
return
}
result = tmp
default:
err = fmt.Errorf("val is not base type")
}
return
}
// 转换为uint64列表(转换过程不是类型安全的)
// valArray:待转换的数据列表
// 返回值:
// result:结果
// err:错误数据
func Uint64Array(valArray []interface{}) (result []uint64, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]uint64, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := Uint64(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 类型转换为float32(转换过程不是类型安全的)
// 返回值:
// result:结果
// err:错误数据
func Float32(val interface{}) (result float32, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case int:
result = float32(val.(int))
case uint:
result = float32(val.(uint))
case int8:
result = float32(val.(int8))
case uint8:
result = float32(val.(uint8))
case int16:
result = float32(val.(int16))
case uint16:
result = float32(val.(uint16))
case int32:
result = float32(val.(int32))
case uint32:
result = float32(val.(uint32))
case int64:
result = float32(val.(int64))
case uint64:
result = float32(val.(uint64))
case float32:
result = float32(val.(float32))
case float64:
result = float32(val.(float64))
case string:
tmp, err1 := strconv.ParseFloat(val.(string), 64)
if err1 != nil {
err = fmt.Errorf("string convert error")
return
}
result = float32(tmp)
default:
err = fmt.Errorf("val is not base type")
}
return
}
// 转换为float32列表(转换过程不是类型安全的)
// valArray:待转换的数据列表
// 返回值:
// result:结果
// err:错误数据
func Float32Array(valArray []interface{}) (result []float32, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]float32, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := Float32(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 类型转换为float64(转换过程不是类型安全的)
// 返回值:
// result:结果
// err:错误数据
func Float64(val interface{}) (result float64, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case int:
result = float64(val.(int))
case uint:
result = float64(val.(uint))
case int8:
result = float64(val.(int8))
case uint8:
result = float64(val.(uint8))
case int16:
result = float64(val.(int16))
case uint16:
result = float64(val.(uint16))
case int32:
result = float64(val.(int32))
case uint32:
result = float64(val.(uint32))
case int64:
result = float64(val.(int64))
case uint64:
result = float64(val.(uint64))
case float32:
result = float64(val.(float32))
case float64:
result = float64(val.(float64))
case string:
tmp, err1 := strconv.ParseFloat(val.(string), 64)
if err1 != nil {
err = fmt.Errorf("string convert error")
return
}
result = tmp
default:
err = fmt.Errorf("val is not base type")
}
return
}
// 转换为Int列表(转换过程不是类型安全的)
// valArray:待转换的数据列表
// 返回值:
// result:结果
// err:错误数据
func Float64Array(valArray []interface{}) (result []float64, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]float64, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := Float64(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 类型转换为bool(转换过程不是类型安全的)
// 返回值:
// result:结果
// err:错误数据
func Bool(val interface{}) (result bool, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case int:
result = (val.(int)) > 0
case uint:
result = (val.(uint)) > 0
case int8:
result = (val.(int8)) > 0
case uint8:
result = (val.(uint8)) > 0
case int16:
result = (val.(int16)) > 0
case uint16:
result = (val.(uint16)) > 0
case int32:
result = (val.(int32)) > 0
case uint32:
result = (val.(uint32)) > 0
case int64:
result = (val.(int64)) > 0
case uint64:
result = (val.(uint64)) > 0
case float32:
result = int(val.(float32)) > 0
case float64:
result = int(val.(float64)) > 0
case bool:
result = val.(bool)
case string:
tmp1, err1 := strconv.ParseBool(val.(string))
if err1 != nil {
// 先尝试转换成数值再进行bool转换
tmp2, err2 := strconv.ParseFloat(val.(string), 64)
if err2 != nil {
err = fmt.Errorf("string convert error")
return
}
result = int(tmp2) > 0
break
}
result = tmp1
default:
err = fmt.Errorf("val is not base type")
}
return
}
// 转换为Int列表(转换过程不是类型安全的)
// valArray:待转换的数据列表
// 返回值:
// result:结果
// err:错误数据
func BoolArray(valArray []interface{}) (result []bool, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]bool, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := Bool(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 类型转换为字符串(转换过程不是类型安全的)
// 返回值:
// result:结果
// err:错误数据
func String(val interface{}) (result string, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case int:
result = strconv.FormatInt(int64(val.(int)), 10)
case uint:
result = strconv.FormatUint(uint64(val.(uint)), 10)
case int8:
result = strconv.FormatInt(int64(val.(int8)), 10)
case uint8:
result = strconv.FormatUint(uint64(val.(uint8)), 10)
case int16:
result = strconv.FormatInt(int64(val.(int16)), 10)
case uint16:
result = strconv.FormatUint(uint64(val.(uint16)), 10)
case int32:
result = strconv.FormatInt(int64(val.(int32)), 10)
case uint32:
result = strconv.FormatUint(uint64(val.(uint32)), 10)
case int64:
result = strconv.FormatInt(int64(val.(int64)), 10)
case uint64:
result = strconv.FormatUint(uint64(val.(uint64)), 10)
case float32:
result = strconv.FormatFloat(float64(val.(float32)), 'f', -1, 32)
case float64:
result = strconv.FormatFloat(val.(float64), 'f', -1, 64)
case string:
result = val.(string)
default:
err = fmt.Errorf("val is not base type")
}
return
}
// 转换为Int列表(转换过程不是类型安全的)
// valArray:待转换的数据列表
// 返回值:
// result:结果
// err:错误数据
func StringArray(valArray []interface{}) (result []string, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]string, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := String(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 转换成时间格式
// val:待转换的数据,如果是字符串,则要求是格式:2006-01-02 15:04:05
// result:结果
// err:错误数据
func DateTime(val interface{}) (result time.Time, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case time.Time:
result = val.(time.Time)
case string:
result, err = timeUtil.ToDateTime(val.(string))
case int, int64, float32, float64:
intVal, err1 := Int64(val)
if err1 != nil {
err = err1
return
}
result = time.Unix(intVal, 0).Local()
default:
err = fmt.Errorf("unknown data type")
}
return
}
// 转换成时间格式
// valArray:待转换的数据,如果是字符串,则要求是格式:2006-01-02 15:04:05
// result:结果
// err:错误数据
func DateTimeArray(valArray []interface{}) (result []time.Time, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]time.Time, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := DateTime(item)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 转换成时间格式
// val:待转换的数据,如果是字符串则使用format进行转换
// format:时间格式
// result:结果
// err:错误数据
func DateTimeByFormat(val interface{}, format string) (result time.Time, err error) {
if val == nil {
err = fmt.Errorf("val is nil")
return
}
switch val.(type) {
case time.Time:
result = val.(time.Time)
case string:
result, err = time.ParseInLocation(val.(string), format, time.Local)
case int, int64, float32, float64:
intVal, err1 := Int64(val)
if err1 != nil {
err = err1
return
}
result = time.Unix(intVal, 0).Local()
default:
err = fmt.Errorf("unknown data type")
}
return
}
// 转换成时间格式
// valArray:待转换的数据,如果是字符串则使用format进行转换
// format:时间格式
// result:结果
// err:错误数据
func DateTimeArrayByFormat(valArray []interface{}, format string) (result []time.Time, err error) {
if valArray == nil {
err = fmt.Errorf("valArray is nil")
return
}
result = make([]time.Time, 0, len(valArray))
for _, item := range valArray {
tmp, err1 := DateTimeByFormat(item, format)
if err1 != nil {
err = err1
return
}
result = append(result, tmp)
}
return
}
// 类型转换(基础数据类型)
// val:原始值
// targetType:目标值类型
// 返回值:
// interface{}:结果
// error:错误信息
func Convert(val interface{}, targetType reflect.Kind) (result interface{}, err error) {
switch targetType {
case reflect.Int:
result, err = Int(val)
case reflect.Int8:
result, err = Int8(val)
case reflect.Int16:
result, err = Int16(val)
case reflect.Int32:
result, err = Int32(val)
case reflect.Int64:
result, err = Int64(val)
case reflect.Uint:
result, err = Uint(val)
case reflect.Uint8:
result, err = Uint8(val)
case reflect.Uint16:
result, err = Uint16(val)
case reflect.Uint32:
result, err = Uint32(val)
case reflect.Uint64:
result, err = Uint64(val)
case reflect.Float32:
result, err = Float32(val)
case reflect.Float64:
result, err = Float64(val)
case reflect.Bool:
result, err = Bool(val)
case reflect.String:
result, err = String(val)
default:
err = fmt.Errorf("Unknown DataType:%s", targetType.String())
}
return
}