Golang相当于pythons __getattr __()或__call __()

时间:2014-06-19 15:41:03

标签: python generics dynamic go

我想在运行时操作结构。

例如,我有一个结构:

type Item struct {
 SomeField string
}

是否可以在运行时添加字段?或尚未定义的访问属性。像pythons __getattr__() or __call__(这样的东西,所以我可以动态控制访问的字段/方法。

E.g。做点什么 Item.DynamicField or Item.DynamicMethod()我不知道将要访问/调用的字段或方法,所以我无法静态定义它。

也许我在Reflect包中遗漏了一些东西?

谢谢。

2 个答案:

答案 0 :(得分:7)

  

是否可以在运行时添加字段?或者尚未定义的访问属性。

没有。 Go是一种具有静态定义类型的编译语言。如果要动态添加属性,则可能需要map

答案 1 :(得分:2)

https://github.com/oleiade/reflections

  

反射包的目的是让开发人员的生活更轻松   当谈到运行时的内省结构。它的API受到启发   来自python语言(getattrsetattrhasattr ...)并提供   对结构字段和标签的简化访问。