我想在运行时操作结构。
例如,我有一个结构:
type Item struct {
SomeField string
}
是否可以在运行时添加字段?或尚未定义的访问属性。像pythons __getattr__() or __call__(
这样的东西,所以我可以动态控制访问的字段/方法。
E.g。做点什么
Item.DynamicField or Item.DynamicMethod()
我不知道将要访问/调用的字段或方法,所以我无法静态定义它。
也许我在Reflect包中遗漏了一些东西?
谢谢。
答案 0 :(得分:7)
是否可以在运行时添加字段?或者尚未定义的访问属性。
没有。 Go是一种具有静态定义类型的编译语言。如果要动态添加属性,则可能需要map。
答案 1 :(得分:2)
https://github.com/oleiade/reflections
反射包的目的是让开发人员的生活更轻松 当谈到运行时的内省结构。它的API受到启发 来自python语言(
getattr
,setattr
,hasattr
...)并提供 对结构字段和标签的简化访问。