Go 递归扩展结构定义?

Go 递归扩展结构定义?,go,reverse-engineering,Go,Reverse Engineering,如何展开结构定义以显示嵌套类型?例如,我想扩展这个 type Foo struct { x int y []string z Bar } type Bar struct { a int b string } 对这样的事情: type Foo struct { x int y []string z Bar struct { a int b string } } 上下文:对现有代码进行反向工程。您可以尝试以下方法列出结构中定

如何展开结构定义以显示嵌套类型?例如,我想扩展这个

type Foo struct {
  x int
  y []string
  z Bar
}
type Bar struct {
  a int
  b string
}
对这样的事情:

type Foo struct {
  x int
  y []string
  z Bar
    struct {
      a int
      b string
    }
}

上下文:对现有代码进行反向工程。

您可以尝试以下方法列出结构中定义的所有字段,递归地列出在该方法中找到的结构

它不能完全产生您所要求的输出,但它非常接近,并且可能可以进行调整

主程序包
进口(
“反映”
“fmt”
)
类型Foo struct{
x int
y[]字符串
z形杆
}
类型栏结构{
整数
b弦
}
func打印字段(前缀字符串,t reflect.Type){
对于i:=0;i
我通过上述操作获得此输出:

x int
y []string
z main.Bar
  a int
  b string

确认:在运行时,您希望生成某种类型的Go源代码表示,递归地扩展结构类型。这是正确的吗?不一定是在运行时,尽管那很好。我有一些高级容器,我只是想了解放入其中的所有内容。如果你想显示值,我经常使用。如果你想浏览源代码中的值,我只需在进入编辑器时跳转到每个类型的定义。等等,你是在问如何在运行时将其作为输出实现,还是要修改源代码的语法,使
Bar
Foo
中定义,而不是独立定义?@evanmcdonnal否,我感兴趣的是查看容器数据结构中的所有数据,以便了解程序正在做什么。这正是我所寻找的。非常感谢!