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