先决条件:Golang 数据类型
当我们将一种数据类型的值分配给另一种数据类型时,就会发生类型转换。静态类型语言如 C/C++、 Java提供对隐式类型转换的支持,但 Golang 不同,因为它不支持自动类型转换或隐式类型转换,即使数据类型兼容。这样做的原因是 Golang 的强类型系统不允许这样做。对于类型转换,您必须执行显式转换。
根据 Golang 规范,Golang 中没有类型转换词或术语。如果您尝试在 Golang 规范或文档中搜索 Type Casting,您将找不到类似的内容。只有类型转换。在其他编程语言中,类型转换也称为类型转换。
类型转换需要什么?
好吧,如果您需要利用数据类型层次结构的某些特征,那么我们必须将实体从一种数据类型更改为另一种数据类型。将值val转换为类型T的一般语法是T(val) 。
例子:
var geek1 int = 845
// explicit type conversion
var geek2 float64 = float64(geek1)
var geek3 int64 = int64(geek1)
var geek4 uint = uint(geek1)
C
// Go program to find the
// average of numbers
package main
import "fmt"
func main() {
// taking the required
// data into variables
var totalsum int = 846
var number int = 19
var avg float32
// explicit type conversion
avg = float32(totalsum) / float32(number)
// Displaying the result
fmt.Printf("Average = %f\n", avg)
}
输出:
Average = 44.526318
注意:由于 Golang 具有强类型系统,它不允许在表达式中混合(如加法、减法、乘法、除法等)数字类型,也不允许在两个混合类型之间执行赋值类型。
例子:
var geek1 int64 = 875
// it will give compile time error as we
// are performing an assignment between
// mixed types i.e. int64 as int type
var geek2 int = geek1
var geek3 int = 100
// it gives compile time error
// as this is invalid operation
// because types are mix i.e.
// int64 and int
var addition = geek1 + geek3