如何获取Go结构体的字段信息

huangapple go评论83阅读模式
英文:

How to get the fields of go struct

问题

让我们假设我们有一个 User 类型:

type User struct {
    FirstName string
    LastName  string
    ...
}

我需要一个函数,它返回一个包含字段名的 []string,即 [FirstName, LastName, ...]

英文:

Lets say we have a User type

type User struct {
    FirstName string
    LastName  string
    ...
}

I need a function that returns []string with the field names in it [FirstName, LastName, ...]

答案1

得分: 4

这可以通过反射来实现(使用reflect包):

instance := struct{Foo string; Bar int }{"foo", 2}

v := reflect.ValueOf(instance)

names := make([]string, 0, v.NumField())

v.FieldByNameFunc(func(fieldName string) bool{
	names = append(names, fieldName)
	return false
})

play上有一个实时示例。

英文:

This can be done using reflection (via the reflect package):

instance := struct{Foo string; Bar int }{"foo", 2}

v := reflect.ValueOf(instance)

names := make([]string, 0, v.NumField())

v.FieldByNameFunc(func(fieldName string) bool{
	names = append(names, fieldName)
	return false
})

Live example on play.

huangapple
  • 本文由 发表于 2013年8月29日 04:35:57
  • 转载请务必保留本文链接:https://go.coder-hub.com/18497711.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定