前言
本篇文章主要是记录golang 中常用的中类型转换的方法
一、Golang 类型常见的转换
类型转换可以分为两类: 同一类型转换和不同类型的数据转换;
同一类型数据转换: 数字和数字 字符串和字符和字节
不同类型数据转换: 数字和字符串
接口类型转化其它类型
二、具体实例分析
1.同类型转换
代码如下( 数字类型转换):
// 数字类型转换 var num1 int = 100 fmt.Println(int64(num1)) var num2 int64 = 100 fmt.Println(int(num2))
2.不同类型转换
2.1 数字和字符串转
数字和字符串转换需要借助strconv 方法
代码如下(字符串 与数字转换):
// 字符串 与数字转换 var num3 int = 100 fmt.Println(strconv.Itoa(num3) + "abc") var str1 string = "100" fmt.Println(strconv.Atoi(str1)) var num4 int64 = 1010 fmt.Println(strconv.FormatInt(num4, 10)) var str2 = "1010" fmt.Println(strconv.ParseInt(str2, 10, 64))
2.2 字符串与[]byte转换
代码如下( 字符串与[]byte转):
// 字符串与[]byte 转换 可以当作是同一类型转换 var str3 = "今天天气很好" byte1 := []byte(str3) fmt.Println(byte1) fmt.Println(string(byte1))
2.3 字符串与rune转化
代码如下( 字符串与rune转化):
// 字符串与rune转化 // rune 为int32类型 // 将字符串转换为rune切牌你,实际上rune切片中存储了字符串Unicode码点 var rune1 = []rune(str3) fmt.Println(rune1) fmt.Println(string(rune1)) fmt.Println(string(rune1[3])) fmt.Println([]int32(str3))
2.4 接口类型转具体类型
代码如下( 接口类型转具体类型):
// 接口类型转具体类型 // 通过断言处理 var inf interface{} = 100 var infStruct interface{} = user{Name: "fischer"} i, ok := inf.(int) fmt.Println(i, ok) u, ok := infStruct.(user) fmt.Println(u, ok)
2.5 时间类型转字符串
代码如下( 时间类型转字符串):
// 时间类型转字符串 var t time.Time t = time.Now() // 注意后面的格式是固定这么写 timeStr := t.Format("2006-01-02 15:04:05Z07:00") fmt.Println(timeStr) // 字符串转时间 t2, _ := time.Parse("2006-01-02 15:04:05Z07:00", timeStr) fmt.Println(t2)
2.6 uintptr
代码如下( uintptr):
// uintptr u1 := user{} // unsafe.Pointer()是通用指针类型, 不能用于计算 uPtr := unsafe.Pointer(&u1) namePtr := unsafe.Pointer(uintptr(uPtr) + unsafe.Offsetof(u1.Name)) *(*string)(namePtr) = "fischer" fmt.Println(u1)
总结
提示:这里对文章进行总结:
略