在使用匿名方法嵌入时,有没有办法从“父”结构的方法中访问“子”结构的名称?
例如:
type Animal struct{}
func (a Animal) SayName() string {
v := reflect.TypeOf(a)
return v.Name()
}
type Zebra struct {
Animal
}
var zebra Zebra
zebraName := zebra.SayName() // "Animal" want "Zebra"
SayName()方法返回"Parent“的type.Name()
。
我意识到我可以做这样的事情,但由于这是一个API,将经常被重用。我更希望有一个重复性较少的解决方案。
type Animal struct{
Name string
}
func (a Animal) SayName() string {
return a.Name
}
type Zebra struct {
Animal
}
zebra := &Zebra{Name:"Zebra"}
zebraName := zebra.SayName() // "Zebra"
对如何实现这一点有什么想法吗?这在Go中是可能的吗?
谢谢。
发布于 2012-04-21 17:30:42
Animal类型不知道任何可能包含它们作为成员的类型,因此Animal方法不能仅基于接收器给出这个答案。但是这些信息必须来自斑马方法吗?
func SayName(a interface{}) string {
return reflect.TypeOf(a).Name()
}
适用于任何类型,包括Zebras。
发布于 2013-04-11 14:09:59
https://stackoverflow.com/questions/10255926
复制