📜  Golang 中的类型转换或类型转换

📅  最后修改于: 2021-10-24 13:01:57             🧑  作者: Mango

先决条件: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