对网站政务建设的建议,网站咨询聊天怎么做,手机设计logo软件,个人建什么样的网站Golang中存在4种类型转换#xff0c;分别是#xff1a;断言、显式、隐式、强制。下面我将一一介绍每种转换使用场景和方法
一、断言类型转换
主要是判断变量是否可以转换成某一类型。断言主要用于变量是interface{}类型#xff08;接口类型#xff09;的情况#xff0c;…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: 181.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包提供的方法 1strconv.Atoi()将字符串类型转成整数 2strconv.Itoa()将整数转成字符串类型
三、隐式类型转换
通常是程序内部自动转换对开发人员无感知
四、强制类型转换
这个暂时未研究