【Go】Go 语言的类型转换


一、类型转换

类型转换用于将一种数据类型的变量转换为另外一种类型的变量。

Go语言中只有强制类型转换,没有隐式类型转换。该语法只能在两个类型之间支持相互转换的时候使用。

Go 语言强制类型转换的基本语法如下:

type(expression)

type 表示要转换的类型。expression 为表达式,表达式包括变量、复杂算子和函数返回值等。


二、什么时候需要强制类型转换?

比如计算直角三角形的斜边长时使用 math 包的 Sqrt() 函数,该函数接收的是 float64 类型的参数,而变量 a 和 b 都是 int 类型的,这个时候就需要将 a 和 b 强制类型转换为 float64 类型。

func sqrtDemo() {
    
    
    var a, b = 3, 4
    var c int
    // math.Sqrt()接收的参数是float64类型,需要强制转换
    c = int(math.Sqrt(float64(a*a + b*b)))
    fmt.Println(c)
}

三、其他实例

以下实例中将整型转化为浮点型,并计算结果,将结果赋值给浮点型变量:

package main

import "fmt"

func main() {
    
    
	var sum int = 17
	var count int = 5
	var mean float32

	mean = float32(sum) / float32(count)
	fmt.Printf("mean 的值为: %f\n", mean)
}

输出结果:

mean 的值为: 3.400000

四、go 不支持隐式转换类型

package main
import "fmt"

func main() {
    
      
    var a int64 = 3
    var b int32
    b = a
    fmt.Printf("b 为 : %d", b)
}

报错:

.\main.go:8:4: cannot use a (type int64) as type int32 in assignment

但是如果改成 b = int32(a) 就不会报错了:

package main

import "fmt"

func main() {
    
    
	var a int64 = 3
	var b int32
	b = int32(a)
	fmt.Printf("b 为 : %d", b)
}

输出结果:

b 为 : 3

参考链接

  1. Go 语言类型转换

猜你喜欢

转载自blog.csdn.net/weixin_44211968/article/details/121393819