go语言类型转换
打印数据类型
fmt.Println(reflect.TypeOf("这是一个string")) // 需要 引入 "reflect"
int64转int
方法一
// 设置一个 int64 的数据
int64_num := int64(6)
// 将 int64 转化为 int
int_num := *(*int)(unsafe.Pointer(&int64_num))
方法2:
var num64 int64 = 99
// method 1:
strInt64 := strconv.FormatInt(num64 , 10)
numInt ,_ := strconv.Atoi(strInt64)
fmt.Println(numInt )
fmt.Println(reflect.TypeOf(numInt ))
string 转 float 64
test := strconv.ParseFloat("116.46", 64)
fmt.Println(test)
float 转 string
strconv.FormatFloat(18.234, 'f', 2, 64) // 转成十进制的,2位小数的字符串, 当第三个参数大于0时,是几表示保留几位小数,
strconv.FormatFloat(10.010, 'f', -1, 64) // 输出:10.01, 第三个参数,如果是小于 0 的值,则返回最少的位数来表示该数(即去掉最后无用的0)
strconv.FormatFloat(18.234, 'E', -1, 64) // 转成科学计算的小数形式, 第四个参数,64 为float的类型,go中float分为32和64位,因此就需要传入32或者64
strconv.FormatFloat(10.100,'f',-1,32) // 输出:10.1, 其中第二个参数,f 参数可以是e,E,g,G
int64 转 string
strconv.FormatInt(int64,10)
string 转 int64
int64, err := strconv.ParseInt(string, 10, 64)
//第二个参数为基数(2~36),
//第三个参数位大小表示期望转换的结果类型,其值可以为0, 8, 16, 32和64,
//分别对应 int, int8, int16, int32和int64
float64 转 int
官方的math 包中提供了取整的方法,向上取整math.Ceil() ,向下取整math.Floor()
通过 + 0.5 来实现四舍五入:
int(math.Floor(6.24821.(float64)+0.5))
string(json)转数组(slice)
// 声明一个数组
var temArray []interface{}
err := json.Unmarshal([]byte(str), &temArray)
if err != nil {
panic(err)
}
fmt.Println(temArray) // 即使是map组成的数组(slice),也可以解析
string(json)转map
json.Unmarshal(b3, &data)
map转string(json)
b4, err := json.Marshal(p.Input()) // 获取query参数
知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。
所谓诚其意者,毋自欺也。