考虑两种结构相同但标签不同的类型:
type Foo struct {
Id int64 `json:"-"`
}
type Bar struct {
Id int64 `json:"id"`
}
不幸的是,当两种类型的标签不同并且有充分的理由时,Go 的习惯用法禁止在两种类型之间进行转换。但是我仍然需要能够控制序列化为 JSON 并且不想使用interface{}类型的数据。
我的问题是,使用 golangunsafe.Pointer在结构相同(但不是标签)的两种类型之间执行强制转换有多安全?就像是:
rf := &Foo{1}
rb := (*Bar)(unsafe.Pointer(rf))
是否有任何在所有的恐慌,也许随之而来的机会,因为内部各两种类型的数据被保持略有不同,由于标签的不同或即将标签每种类型的与实际的数据类型和数据分别举行的信息结构相同吗?
编辑
为了澄清起见,我应该提到,尽管上面提供的示例使用单字段结构,但问题实际上是关于包含多个字段的结构类型。
潇潇雨雨
元芳怎么了
相关分类