Go|数据类型转换
在必要以及可行的情况下,一个类型的值可以被转换成另一种类型的值。由于Go语言不存在隐式类型的转换,因此所有的类型转换都必须是显式的声明
valueOfTypeB = typeB(valueOfTypeA)
类型B的值 = 类型B(类型A的值)
package main
import "fmt"
// 类型转换
// 转换后的变量 := 要转换的类型(转换的变量)
// 整型不能转换为布尔型 bool
func main() {
a := 3 //int
b := 3.14 //float64
//需求:将a转换为float64类型
c := float64(a) //强制类型转换
d := int(b) //强制类型转换
//打印数据类型以及值
fmt.Printf("a的类型:%T,值:%v\n", a, a)
fmt.Printf("b的类型:%T,值:%v\n", b, b)
fmt.Printf("c的类型:%T,值:%v\n", c, c)
fmt.Printf("d的类型:%T,值:%v\n", d, d)
//
}
运行结果
a的类型:int,值:3
b的类型:float64,值:3.14
c的类型:float64,值:3
d的类型:int,值:3
类型转换只能在定义正确的情况下转换成功,例如从一个取值范围较小的类型转换到一个取值范围较大的类型(将int16转换int32).当从一个取值范围较大的类型转换到取值范围较小的类型时(将int32转换为int16 或将float32转为int),会发生精度丢失(截断)的情况。