相关疑难解决方法(0)

按名称访问struct属性

这是一个不起作用的简单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"]没有.

谁能告诉我如何使这项工作?

go go-reflect

59
推荐指数
3
解决办法
6万
查看次数

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

我想在运行时操作结构.

例如,我有一个结构:

type Item struct {
 SomeField string
}
Run Code Online (Sandbox Code Playgroud)

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

例如,做一些 Item.DynamicField or Item.DynamicMethod()我不完全知道将要访问/调用的字段或方法的地方,所以我无法静态定义它.

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

谢谢.

python generics dynamic go

2
推荐指数
2
解决办法
2107
查看次数

标签 统计

go ×2

dynamic ×1

generics ×1

go-reflect ×1

python ×1