这是一个不起作用的简单go程序:
package main
import "fmt"
type Vertex struct {
X int
Y int
}
func main() {
v := Vertex{1, 2}
fmt.Println(getProperty(&v, "X"))
}
func getProperty(v *Vertex, property string) (string) {
return v[property]
}
Run Code Online (Sandbox Code Playgroud)
错误:
prog.go:18:无效操作:v [property](类型*Vertex的索引)
我想要的是使用其名称访问Vertex X属性.如果我这样做v.X,但v["X"]没有.
谁能告诉我如何使这项工作?
我想在运行时操作结构.
例如,我有一个结构:
type Item struct {
SomeField string
}
Run Code Online (Sandbox Code Playgroud)
是否可以在运行时添加字段?或尚未定义的访问属性.像pythons __getattr__() or __call__(这样的东西)所以我可以动态控制访问的字段/方法.
例如,做一些
Item.DynamicField or Item.DynamicMethod()我不完全知道将要访问/调用的字段或方法的地方,所以我无法静态定义它.
也许我在Reflect包中遗漏了一些东西?
谢谢.