ZBLOG

golang struct 强制转换

在 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 结构体。由于 PersonEmployee 都有相同的字段名称和数据类型,因此可以进行强制类型转换。但是,请注意在输出结果中看到了一个额外的零值(0),即 Salary 字段的默认值。这是因为我们没有为 Salary 字段指定任何值,因此它的值默认为零。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=6424

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?