rco*_*rre 0 type-conversion go
package main
type Inner struct {
x int
}
type Outer struct {
Inner
}
func main() {
x := Inner{1}
y := (Outer)(x) // cannot convert x (type Inner) to type Outer
}
Run Code Online (Sandbox Code Playgroud)
关于转化的go规范部分声称
在以下任何一种情况下,非常数值x都可以转换为类型T:...忽略struct标签(见下文),x的类型和T具有相同的底层类型....
关于类型标识的部分说:
如果两个结构类型具有相同的字段序列,并且相应的字段具有相同的名称,相同的类型和相同的标记,则它们是相同的.
这是我的理解,这两个Inner并Outer有单场x这是一个int.那么为什么我不能将其转换Outer为Inner?
我最终发现我可以使用x.Inner,但它花了我一段时间,所以我很好奇为什么(在我看来)更明显的方法是不允许的.