English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
先决条件,您应该学习了:Golang数据类型
当我们将一种数据类型的值分配给另一种数据类型时,就会发生类型转换。诸如C / C ++,Java之类的静态类型语言提供了对隐式类型转换的支持,但是Golang有所不同,因为即使数据类型兼容,它也不支持自动类型转换或隐式类型转换。原因是Golang的强类型系统不允许这样做。对于类型转换,必须执行显式转换。
Golang 如何进行类型转换?
如果您需要利用数据类型层次结构的某些特征,那么我们必须将实体从一种数据类型转换为另一种数据类型。将值val转换为类型T的一般语法是T(val)。
var w3codebox1 int = 845 // 显式类型转换 var w3codebox2 float64 = float64(w3codebox1) var w3codebox3 int64 = int64(w3codebox1) var w3codebox4 uint = uint(w3codebox1)
//计算平均值 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 w3codebox1 int64 = 875 //它会在编译时抛出错误给我们 //因为正在执行混合类型,例如把int64作为int类型 var w3codebox2 int = w3codebox1 var w3codebox3 int = 100 //它抛出编译时错误 //这是无效操作 //因为类型是混合的 int64 和 int 相加 var addition = w3codebox1 + w3codebox3