Go 类型转换
先决条件,您应该学习了:Golang数据类型
当我们将一种数据类型的值分配给另一种数据类型时,就会发生类型转换。诸如C / C ++,Java之类的静态类型语言提供了对隐式类型转换的支持,但是Golang有所不同,因为即使数据类型兼容,它也不支持自动类型转换或隐式类型转换。原因是Golang的强类型系统不允许这样做。对于类型转换,必须执行显式转换。
Golang 如何进行类型转换?
如果您需要利用数据类型层次结构的某些特征,那么我们必须将实体从一种数据类型转换为另一种数据类型。将值val转换为类型T的一般语法是T(val)。
var nhooo1 int = 845 // 显式类型转换 var nhooo2 float64 = float64(nhooo1) var nhooo3 int64 = int64(nhooo1) var nhooo4 uint = uint(nhooo1)
//计算平均值 package main import "fmt" func main() { var totalsum int = 446 var number int = 23 var avg float32 // 显式类型转换 avg = float32(totalsum) / float32(number) // 显示结果 fmt.Printf("平均值 = %f\n", avg) }
输出:
平均值 = 19.391304
注意:由于Golang具有强大的类型系统,因此不允许在表达式中混合使用数字类型(例如加,减,乘,除等),并且不允许在两个混合类型之间执行赋值类型。
var nhooo1 int64 = 875 //它会在编译时抛出错误给我们 //因为正在执行混合类型,例如把int64作为int类型 var nhooo2 int = nhooo1 var nhooo3 int = 100 //它抛出编译时错误 //这是无效操作 //因为类型是混合的 int64 和 int 相加 var addition = nhooo1 + nhooo3