Go 提取结构的字段名并将其放入字符串片段中

Go 提取结构的字段名并将其放入字符串片段中,go,struct,raylib,Go,Struct,Raylib,我希望能够将结构的字段名(而不是值)提取为字符串,将它们放在字符串片段中,然后使用这些名称在程序其他地方的Raylib(Go的图形库)菜单中打印。这样,如果我更改结构中的字段,菜单将自动更新,而无需返回并手动编辑。因此,如果你看一下下面的结构,我想提取名称移动、实体、轮廓等,而不是布尔值。有办法做到这一点吗 type genatt struc { moving, solid, outline, gradient, rotating bool } 您可以使用反射(包)来执行此操作。获取结

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

type genatt struc {
    moving, solid, outline, gradient, rotating bool
}
您可以使用反射(包)来执行此操作。获取结构值的描述符,并使用
Type.Field()
访问字段

例如:

t := reflect.TypeOf(genatt{})

names := make([]string, t.NumField())
for i := range names {
    names[i] = t.Field(i).Name
}

fmt.Println(names)
这将输出(在上尝试):

见相关问题:


这完全是我想要的,谢谢。如果我想要一个字段类型列表作为字符串,我会怎么做?例如[int float32 string int]因此,它不是切片中的名称,而是切片中作为字符串的字段类型?如果您只想添加
string
字段,请检查类型的种类:
t.field(i).type.kind()==reflect.string
[moving solid outline gradient rotating]