我真的想要一种在 go 中打印字段名称的字符串表示形式的方法。它有几个用例,但这里有一个例子:
假设我有一个结构
type Test struct {
Field string `bson:"Field" json:"field"`
OtherField int `bson:"OtherField" json:"otherField"`
}
例如,我想做一个 mongo 查找:
collection.Find(bson.M{"OtherField": someValue})
我不喜欢我必须把字符串“OtherField”放在那里。错误输入或更改结构似乎很脆弱,然后我的查询在我不知情的情况下失败。
有什么方法可以得到字符串“OtherField”而不必声明一个常量或类似的东西?我知道我可以使用反射从结构中获取字段名称列表,但我真的很想做一些类似的事情
fieldName := nameOf(Test{}.OtherField)
collection.Find(bson.M{fieldName: someValue})
有没有办法在 Go 中做到这一点?C# 6 有内置的 nameof,但是通过反射挖掘我在 Go 中找不到任何方法来做到这一点。