提取结构的 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?