是否有内置的递归打印树的方法?

时间:2016-12-13 20:33:28

标签: go struct printing interface

我正在学习Go并寻找一种方法来打印我的AST(作为参考,我跟随Ruslan的优秀Let's Build a Simple Interpreter)。

我正在使用以下内容打印根目录:

tree := par.Parse()
fmt.Printf("\nParse Tree:\n%#v\n", tree)

打印哪些:

Parse Tree:
&Node.Program{name:"PART10AST", block:(*Node.Block)(0x11b32160)}

有没有办法递归打印节点和所有子节点?有什么影响:

&Node.Program{name:"PART10AST", block:(*Node.Block{decl: *Node.declarations{...}, comp: *Node.Compound{...}})}

这种功能是否以任何方式内置于Go? Node是存储数据和/或更多struct的几种不同类型Node的接口。

1 个答案:

答案 0 :(得分:2)

您正在寻找ast.Fprint,https://godoc.org/go/ast#Fprint