Go 语言中的类型转换有哪些方式
更新时间:2023-10-111. 基本类型转换
将一个类型转换成另一个类型的最基础的方法就是使用括号和类型名,如将整型转换为浮点数:
var i int = 42
var f float64 = float64(i)
fmt.Println(f) // 输出 42.0
2. 有符号和无符号整型类型转换
在 Go 语言中有符号整型和无符号整型并不是一个类型,因此两者之间不能直接转换,需要使用显示转换。在将有符号整型转换成无符号整型时需要注意:
- 如果有符号整型的值小于 0,那么转换成无符号整型后得到的结果是该有符号整型值加上该无符号整型的最大值再加 1;
- 如果有符号整型的值大于等于 0,那么转换成无符号整型后得到的结果是该有符号整型值本身。
var i int16 = -1
var ui uint16 = uint16(i)
fmt.Println(ui) // 输出 65535
3. 字符串和切片类型转换
字符串和切片的转换比较灵活,在不同场合下可以相互转换。
- 将字符串转换成切片:可以通过将字符串转换成字节数组,再将字节数组转换成切片来实现。示例如下:
s := "Hello, world"
b := []byte(s)
fmt.Println(b) // 输出 [72 101 108 108 111 44 32 119 111 114 108 100]
str := string(b)
fmt.Println(str) // 输出 Hello, world
- 将切片转换成字符串:使用 Go 语言的标准库 strconv 中的函数实现。示例如下:
b := []byte{72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100}
str := string(b)
fmt.Println(str) // 输出 Hello, world
4. 自定义类型转换
Go 语言中可以通过自己定义类型来创建用户自定义类型,可以通过将自定义类型与基本类型进行转换来使用自己定义的类型,示例如下:
type MyInt int // 定义 MyInt 类型
var i MyInt = 42 // 声明一个 MyInt 类型变量
var j int = int(i) // 将 MyInt 类型转换成 int 类型
fmt.Println(j) // 输出 42
总结
本文总结了 Go 语言中的不同类型之间的转换方式,包括基本类型、有符号和无符号整型、字符串和切片、自定义类型转换。在实际的开发中,这些转换方式经常被用到,希望本文能对初学者有所帮助。