go语言 – 类型转换

Go对类型转换非常严格,不支持自动类型转换。让我们用一个例子来看看这意味着什么。

package main

import (  
    "fmt"
)

func main() {  
    i := 55      //int
    j := 67.8    //float64
    sum := i + j //int + float64 不允许
    fmt.Println(sum)
}

以上代码在C语言中是完全合法的。但在go语言中会报错。

i的类型是int, j的类型是float64。将这2个不同类型的数值相加,这是不允许的,会报错:main.go:10: invalid operation: i + j (mismatched types int and float64)

为了修正这个错误,ij应该是相同类型。我们把j转换成int, T(v)是把值v转换成类型T的语法

package main

import (  
    "fmt"
)

func main() {  
    i := 55      //int
    j := 67.8    //float64
    sum := i + int(j) //j 转换为 int
    fmt.Println(sum)
}

输出:122

赋值也是一样,需要显式类型转换。

package main

import (  
    "fmt"
)

func main() {  
    i := 10
    var j float64 = float64(i) // 必须显式转换
    fmt.Println("j", j)
}

如果将i赋值给j,而不进行任何类型转换时,编译器会抛出一个错误。



浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载