golang是强类型语言,在应用过程中类型转换基本都会用到。下面整理一下常用的类型转换,会持续更新。
bytes 、string转换
//类型转换 string to bytes
func str2bytes(s string) []byte {
x := (*[2]uintptr)(unsafe.Pointer(&s))
h := [3]uintptr{x[0],x[1],x[1]}
return *(*[]byte)(unsafe.Pointer(&h))
}
//类型转换 bytes to string
func bytes2str(b []byte) string {
return *(*string)(unsafe.Pointer(&b))
}
interface转为string
//interface转为string
func interface2string(inter interface{}) string {
tempStr := ""
switch inter.(type) {
case string:
tempStr = inter.(string)
break
case float64:
tempStr = strconv.FormatFloat(inter.(float64),'f', -1, 64)
break
case int64:
tempStr = strconv.FormatInt(inter.(int64), 10)
break
case int:
tempStr = strconv.Itoa(inter.(int))
break
}
return tempStr
}
最新更新日期20161219
func ToStr(value interface{},args ...int) (s string) {
switch v := value.(type) {
case bool:
s = strconv.FormatBool(v)
case float32:
s = strconv.FormatFloat(float64(v),argInt(args).Get(0, -1),argInt(args).Get(1, 32))
case float64:
s = strconv.FormatFloat(v, 64))
case int:
s = strconv.FormatInt(int64(v), 10))
case int8:
s = strconv.FormatInt(int64(v), 10))
case int16:
s = strconv.FormatInt(int64(v), 10))
case int32:
s = strconv.FormatInt(int64(v), 10))
case int64:
s = strconv.FormatInt(v, 10))
case uint:
s = strconv.FormatUint(uint64(v), 10))
case uint8:
s = strconv.FormatUint(uint64(v), 10))
case uint16:
s = strconv.FormatUint(uint64(v), 10))
case uint32:
s = strconv.FormatUint(uint64(v), 10))
case uint64:
s = strconv.FormatUint(v, 10))
case string:
s = v
case []byte:
s = string(v)
default:
s = fmt.Sprintf("%v",v)
}
return s
}