0

我希望能够将结构的 FIELD 名称(而不是值)提取为字符串,将它们放在一段字符串中,然后使用这些名称在 Raylib(Go 的图形库)的菜单中的其他地方打印程序。这样,如果我更改结构中的字段,菜单将自动更新,而无需返回并手动编辑它。因此,如果您查看下面的结构,我想提取名称 MOVING、SOLID、OUTLINE 等,而不是布尔值。有没有办法做到这一点?

type genatt struc {
    moving, solid, outline, gradient, rotating bool
}
4

1 回答 1

1

您可以使用反射(reflect包)来执行此操作。获取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]

查看相关问题:

如何在golang proto生成的复杂结构中获取所有字段名称

如何按字母顺序对结构字段进行排序

Go 中标签的用途是什么?

于 2021-05-19T17:55:37.097 回答