gpt4 book ai didi

reflection - 使用嵌入进行反射

转载 作者:IT王子 更新时间:2023-10-29 02:00:24 25 4
gpt4 key购买 nike

当使用匿名方法嵌入时,有没有办法从“父”结构上的方法访问“子”结构的名称。

例如:

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 中可能吗?

谢谢。

最佳答案

Animal 类型对可能包含它们作为成员的类型一无所知,因此 Animal 方法无法仅根据接收者为您提供此答案。但是这些信息必须来自 Zebra 方法吗?

func SayName(a interface{}) string {
return reflect.TypeOf(a).Name()
}

适用于任何类型,包括斑马。

关于reflection - 使用嵌入进行反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10255926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com