类型转换是将一种数据类型(整数、浮点数、字符串)的值转换为另一种数据类型的过程。例如,
// 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)
}
在上面的示例中,我们创建了一个名为 number 的 int
类型变量。此处,我们尝试将浮点数值 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
此处,我们将两种不同类型(float
和 int
)的值相加。由于 Go 不支持隐式类型转换,我们需要将其中一种类型的值更改为另一种类型。
这就是我们使用 float32(number1)
将 int
类型变量 number 转换为 float
类型的原因。