我认为在结构中获取字段名称的更好方法是

func main() {
    a := &A{Foo: "afoo"}
    val := reflect.ValueOf(a).Elem()
    for i:=0; i<val.NumField();i++{
        fmt.Println(val.Type().Field(i).Name)
    }
}

有两个提示:

reflect.ValueOf(a).Elem().Elem()val.Field(i).Type().Nameval.Type().Field(i).Nameval.Type().Field(i).Name

希望它有用..