在 Go 中,可以通过类型转换将一个 struct 转换为另一个 struct。类型转换的语法如下:
newStruct := oldStruct.(newStructType)
其中,oldStruct 是要被转换的 struct 变量,newStructType 是目标 struct 的类型。这种类型转换只能用于两个具有相同字段名称和数据类型的 struct。
如果 oldStruct 无法强制转换成 newStructType,则会发生运行时错误。因此,在进行强制类型转换之前,最好先使用 type assertion 检查 oldStruct 是否是 newStructType 类型。
以下是一个示例代码:
package main
import (
"fmt"
)
type Person struct {
Name string
Age int
}
type Employee struct {
Name string
Age int
Salary float64
Company string
}
func main() {
person := Person{Name: "Alice", Age: 25}
fmt.Println(person)
// 将 person 转换为 Employee 类型,并赋值给 employee 变量
employee := Employee(person) // 强制类型转换
fmt.Println(employee)
}
输出结果为:
{Alice 25}
{Alice 25 0 }
在上面的示例中,我们将 Person 结构体强制转换为 Employee 结构体。由于 Person 和 Employee 都有相同的字段名称和数据类型,因此可以进行强制类型转换。但是,请注意在输出结果中看到了一个额外的零值(0),即 Salary 字段的默认值。这是因为我们没有为 Salary 字段指定任何值,因此它的值默认为零。




