Golang中存在4种类型转换,分别是:断言、显式、隐式、强制。下面我将一一介绍每种转换使用场景和方法
一、断言类型转换
主要是判断变量是否可以转换成某一类型。断言主要用于变量是interface{}类型(接口类型)的情况,且变量值必须与要转换类型一致。可以细分为2种使用方式
- 普通断言
- switch断言
1.1 普通断言示例
// 定义一个接口类型变量
var userInfo interface{}
// 定义一个map类型变量
userInfoNew := map[string]int{
"phoneNum": 123456,
"age": 18,
}
// 由于interface{}可以接收任何类型变量,因此可以将map类型变量赋值给它
userInfo = userInfoNew
// 此时userInfo变量类型仍为interface{},但变量值是map类型,若想获取变量值需采用断言进行类型转换
res, _ := userInfo.(map[string]int)
fmt.Println("age:", res["age"])
输出结果:
age: 18
1.2 switch断言示例
var userInfo interface{} = "user info"
switch val := userInfo.(type) {
case float32:
fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
case float64:
fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
case int:
fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
case bool:
fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
case string:
fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
default:
fmt.Println("非已知类型")
}
输出结果:
userInfo变量的类型为string userInfo变量的值为user info
二、显示类型转换
细分为2种:
- 表达式格式为:
T(x)
,T为变量x要转换的最终类型。适用整型与浮点型互转,字节数组与字符串类型互转,结构体类型转换接口类型(反之不行) - 使用strconv包提供的方法
1)strconv.Atoi():将字符串类型转成整数
2)strconv.Itoa():将整数转成字符串类型
三、隐式类型转换
通常是程序内部自动转换,对开发人员无感知文章来源:https://www.toymoban.com/news/detail-730167.html
四、强制类型转换
这个暂时未研究文章来源地址https://www.toymoban.com/news/detail-730167.html
到了这里,关于Golang中的类型转换介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!