以字符串开头的结构字段名称

时间:2015-10-25 14:29:03

标签: go

我有一个go结构,我需要使用其中一个字段。但是我开始使用字符串。我该怎么说才能获得这个领域。

package main
import "fmt"

func main() {

    type Point struct{
  x int
  y int
}

    pt := Point{x:2, y:3}
    a  := "x"
    fmt.Printf("%s", pt.a)
} 

a = "x"以来我期待pt.x = 2。这是打印出来的错误信息。我肯定是从一个字符串开始,所以我不能删除引号。

$ go run point.go
# command-line-arguments
./point.go:14: pt.a undefined (type Point has no field or method a)

1 个答案:

答案 0 :(得分:3)

如果您需要访问名称以字符串形式给出的字段,您别无选择,只能使用反射。 Go不是Python。 : - )

This blog有一个很好的解释。

Here是反射包文档。

但请注意,反射通常仅用作最后的手段。它消除了静态类型的安全性并且对性能有害。

你到底在寻找什么?可能有一种方法可以在不使用反射的情况下满足您的要求。例如,如果您不需要附加到结构的方法,则可以使用map[string]int

相关问题