📅  最后修改于: 2023-12-03 14:41:34.657000             🧑  作者: Mango
在Golang中,类型转换是将一个数据类型的值转换为另一个数据类型的过程。在某些情况下,我们可能需要将一个类型的值转换为另一个类型,以便进行计算或满足特定的需求。
Golang提供了一些内置函数来进行基本类型之间的转换:
var num int = 10
var floatNum float64 = float64(num)
var floatNum float64 = 10.5
var num int = int(floatNum)
var num int = 10
var str string = strconv.Itoa(num)
var str string = "10"
num, _ := strconv.Atoi(str) // 使用 "_ "忽略错误
var str string = "10.5"
floatNum, _ := strconv.ParseFloat(str, 64) // 使用 "_ "忽略错误
在Golang中,自定义类型之间的转换需要显式进行,使用类型名称进行转换。
type MyInt int
var num MyInt = 10
var regularInt int = int(num) // 自定义类型 MyInt 转换为 int
var newNum MyInt = MyInt(regularInt) // int 转换为自定义类型 MyInt
在Golang中,接口类型之间的转换是通过类型断言来实现的。
var val interface{} = [...]int{1, 2, 3}
// 检查接口类型的值是否为数组类型
arr, ok := val.([3]int)
if ok {
fmt.Println("接口类型转为数组类型成功:", arr)
} else {
fmt.Println("接口类型转为数组类型失败")
}
在Golang中,结构体类型之间的转换可以通过同名字段进行转换。
type Person struct {
Name string
Age int
}
type Employee struct {
Name string
Age int
Company string
}
var p1 Person = Person{
Name: "Alice",
Age: 25,
}
var e1 Employee = Employee(p1) // Person类型转换为Employee类型
fmt.Println(e1) // 输出: {Alice 25 ""}
var e2 Employee = Employee{
Name: "Bob",
Age: 30,
Company: "ABC Inc",
}
var p2 Person = Person(e2) // Employee类型转换为Person类型
fmt.Println(p2) // 输出: {Bob 30}
在Golang中,数组之间的转换需要逐个元素进行转换。
var arr1 [3]int = [3]int{1, 2, 3}
var arr2 [3]int
for i, v := range arr1 {
arr2[i] = v
}
fmt.Println(arr2) // 输出: [1 2 3]
以上就是关于Golang中类型转换或类型转换的介绍。在进行类型转换时,务必注意类型之间的兼容性,否则可能出现不可预料的结果或编译错误。