Go 类型转换

类型转换是将一种数据类型(整数、浮点数、字符串)的值转换为另一种数据类型的过程。例如,

// variable of float type
var floatValue float = 9.8

// convert float to int
var intValue int = int(floatValue)

此处,int(floatValue) 指定我们将浮点数值 9.8 转换为 9

由于我们是手动执行类型转换,因此称为Go 中的显式类型转换


Go 显式类型转换

Golang 提供了各种预定义函数,如 int()float32()string() 等来执行显式类型转换。

让我们看一些显式类型转换的示例

示例:Go 浮点数到整数转换

package main
import "fmt"

func main() {
  
  var floatValue float32 = 5.45

// type conversion from float to int var intValue int = int(floatValue)
fmt.Printf("Float Value is %g\n", floatValue) fmt.Printf("Integer Value is %d", intValue) }

输出

Float Value is 5.45
Integer Value is 5

在此,我们使用函数 int() 将值从 5.45 转换为 5

在这种情况下,我们是手动将一种类型的值转换为另一种类型。因此,它称为显式类型转换。


示例:Go 整数到浮点数转换

package main
import "fmt"

func main() {
  
  var intValue int = 2

// type conversion from int to float var floatValue float32 = float32(intValue)
fmt.Printf("Integer Value is %d\n", intValue) fmt.Printf("Float Value is %f", floatValue) }

输出

Integer Value is 2
Float Value is 2.000000

在此,我们使用函数 float32() 将整数值转换为浮点数。类型转换后,整数值 2 变为 2.000000


Go 中的隐式类型转换

在隐式类型转换中,一种数据类型会自动转换为另一种数据类型。但是,Go 不支持隐式类型转换。例如,

package main
import "fmt"

func main() {
  
  // initialize integer variable to a floating-point number
  var number int = 4.34

  fmt.Printf("Number is %g", number)
}

在上面的示例中,我们创建了一个名为 numberint 类型变量。此处,我们尝试将浮点数值 4.34 分配给 int 变量。

当我们运行此程序时,我们会收到一个错误

./prog.go:8:7: constant 4.34 truncated to integer

这是因为 Golang 不支持隐式类型转换。


示例:使用 Go 类型转换添加整数和浮点数

package main
import "fmt"

func main() {
  
  var number1 int = 20
  var number2 float32 = 5.7
  var sum float32
// addition of different data types sum = float32(number1) + number2
fmt.Printf("Sum is %g",sum) }

输出

Sum is 25.7

在上面的示例中,我们创建了一个名为 number1 的整数变量和一个名为 number2 的浮点数变量。请注意这行:

sum = float32(number1) + number2

此处,我们将两种不同类型(floatint)的值相加。由于 Go 不支持隐式类型转换,我们需要将其中一种类型的值更改为另一种类型。

这就是我们使用 float32(number1)int 类型变量 number 转换为 float 类型的原因。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战