
Golang中的类型转换是一种将变量从一种数据类型转换为另一种数据类型的方法。例如,如果你想把长值保存为一个简单的整数,你可以把long类型转换为int类型。你可以使用cast操作符将数值从一种类型转换到另一种类型。
Golang类型转换
当我们把一个数据类型的值分配给另一个数据类型时,就会发生类型转换。像C++和Java这样的静态类型语言,提供了对隐式类型转换的支持,但Go语言不同,因为它不支持自动类型转换或隐式类型转换,即使数据类型是兼容的。
Golang不支持隐式类型转换,因为它的强类型系统不允许它这样做。
简而言之,如果你想利用数据类型层次的特定特性,那么我们必须将实体从一种数据类型变为另一种。
在编程中,有两种类型的数据类型转换可用。
- 隐式类型转换
- 显式类型转换
隐式类型转换
隐式类型转换,也被称为协整,是由编译器自动进行的类型转换。有些语言允许甚至要求编译器提供协整功能。
Golang不支持隐式类型转换,因为它有强大的类型系统。
显式类型转换
显式类型转换是一种特殊的编程指令,它指定了在一个给定的表达式中把一个变量当作什么数据类型(或一个中间计算结果)。例如,转换会忽略 "额外 "的信息(但绝不会向被转换的类型添加信息)。
请看以下Go中显式类型转换的代码片断。
var badboys int = 1921
// explicit type conversion
var badboys2 float64 = float64(badboys)
var badboys3 int64 = int64(badboys)
var badboys4 uint = uint(badboys)
类型转换的语法
如果你想把一个值从一个数据类型转换到另一个,你必须遵循以下语法。
newDataTypeVariable = T(oldDataTypeVariable)
其中T是新的数据类型。
一些数字转换。
与C语言不同,在Go中,不同类型的项目之间的赋值需要明确的转换。
试着去掉例子中的 float64 或 uint 转换,看看会发生什么。
请看下面完整的代码例子。
// hello.go
package main
import "fmt"
func main() {
// taking the required
// data into variables
var x int = 19
var y int = 21
var mul float32
// explicit type conversion
mul = float32(x) * float32(y)
// Displaying the result
fmt.Printf("Multiplication = %f\n", mul)
}
输出
go run hello.go
Multiplication = 399.000000
从输出中,你可以看到。
Golang有一个强大的类型系统;这就是为什么它不允许你在表达式中混合数字类型, 而且,也不允许你在两个混合类型之间进行赋值。
请看下面的代码。
// hello.go
package main
import "fmt"
func main() {
// taking the required
// data into variables
var x int = 19
var y float32 = 21
var mul float32
mul = x * y
// Displaying the result
fmt.Printf("Multiplication = %f\n", mul)
}
输出
go run hello.go
# command-line-arguments
./hello.go:14:10: invalid operation: x * y (mismatched types int and float32)
它给出了一个编译时错误,因为这是一个无效的操作。毕竟,类型是一种混合。
本教程到此为止。