提取结构的 FIELD 名称并将它们放入一段字符串中
Extract FIELD names of a struct and put them in a slice of strings
我希望能够将结构的 FIELD 名称(而不是值)提取为字符串,将它们放入一段字符串中,然后使用这些名称在 Raylib(一个用于的图形库)中的菜单中打印Go) 程序的其他地方。这样,如果我更改结构中的字段,菜单将自动更新,而无需返回并手动编辑它。所以,如果你看一下下面的结构,我想提取名称 MOVING、SOLID、OUTLINE 等,而不是布尔值。有办法吗?
type genatt struc {
moving, solid, outline, gradient, rotating bool
}
您可以使用结构值的反射(reflect
package) to do this. Acquire the reflect.Type
描述符,并使用Type.Field()
访问字段。
例如:
t := reflect.TypeOf(genatt{})
names := make([]string, t.NumField())
for i := range names {
names[i] = t.Field(i).Name
}
fmt.Println(names)
这将输出(在 Go Playground 上尝试):
[moving solid outline gradient rotating]
查看相关问题:
What are the use(s) for tags in Go?
我希望能够将结构的 FIELD 名称(而不是值)提取为字符串,将它们放入一段字符串中,然后使用这些名称在 Raylib(一个用于的图形库)中的菜单中打印Go) 程序的其他地方。这样,如果我更改结构中的字段,菜单将自动更新,而无需返回并手动编辑它。所以,如果你看一下下面的结构,我想提取名称 MOVING、SOLID、OUTLINE 等,而不是布尔值。有办法吗?
type genatt struc {
moving, solid, outline, gradient, rotating bool
}
您可以使用结构值的反射(reflect
package) to do this. Acquire the reflect.Type
描述符,并使用Type.Field()
访问字段。
例如:
t := reflect.TypeOf(genatt{})
names := make([]string, t.NumField())
for i := range names {
names[i] = t.Field(i).Name
}
fmt.Println(names)
这将输出(在 Go Playground 上尝试):
[moving solid outline gradient rotating]
查看相关问题:
What are the use(s) for tags in Go?