系列文章目录
略
文章目录
前言
本篇文章主要是记录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)
总结
提示:这里对文章进行总结:
略