首先,您所谓的装饰器实际上称为标记。您可以使用反射读取这些标签。该
reflect软件包甚至有自己的示例。
不过,这是另一个示例,该示例打印结构成员的所有标签(单击播放):
type Foo struct { A int `tag for A` B int `tag for B` C int}func main() { f := Foo{} t := reflect.TypeOf(f) for i := 0; i < t.NumField(); i++ { fmt.Println(t.Field(i).Tag) }}请注意,如果
f是一个指针,例如a
*Foo,则必须首先间接(取消引用)该值,否则返回的类型
TypeOf不是结构而是指针,
NumField并且
Field()也不起作用。



