本文介绍了如果struct A嵌入到B中,那么A的访问方法和B的字段的方法是否可以?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
struct A {}
func(a * A)BName(id int)string {
return a .Name
$ b $ struct B {
* A
名称字符串
}
func main(){
b:=& B {名称:abc}
fmt.Println(b.Name)
}
代码失败,我想知道如何编写代码来实现,A.BName可以访问B的struct name属性
解决方案
这是不可能的。 struct A并不知道它嵌入的类型。想一想,A可以嵌入到任何其他结构中,所以你如何提前知道嵌入到A中的结构的类型。
如果你想这样做,你需要在B中引用外部结构B.
类型A struct {
* B
}
func(a *)PrintName()字符串{返回aBName}
类型B struct {
A //不需要在这里使用指针
名称字符串
}
var b B
bAB =& b
fmt.Println(b.PrintName())
struct A {}
func (a *A) BName(id int) string {
return a.Name
}
struct B {
*A
Name string
}
func main() {
b := &B{Name: "abc"}
fmt.Println(b.Name)
}
the code failure, I want know how to write code to achieve, A.BName can access B struct attribute Name
解决方案
This is not possible. struct A does not know anything about the types it is embedded into. Think about it, A can be embedded into any other struct, so how could you know ahead of time the type of the struct that A is embedded into.
If you want to do this, you need to place a reference to B, the outer structure into A.
type A struct {
*B
}
func (a *A) PrintName() string { return a.B.Name }
type B struct {
A // no need to use a pointer here
Name string
}
var b B
b.A.B = &b
fmt.Println(b.PrintName())
这篇关于如果struct A嵌入到B中,那么A的访问方法和B的字段的方法是否可以?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!