我正在寻找一个从某些给定输入生成方法存根的工具。我已经看过the ast
package,但它似乎代表了一个已经解析过的AST,它有关于源文件中所有内容的信息。重要的是,您需要提供源信息
我正在考虑以编程方式生成源文件,所以我不知道最终文件中我的AST节点最终会在哪里结束。
我想知道:
ast
包中的位置提供虚拟信息,是否可以正确打印(即忽略位置信息)?我意识到我可以使用文本生成来完成所有这些操作,但这似乎是类型不安全且难以处理。
答案 0 :(得分:1)
考虑到https://github.com/lu4p/astextract,它具有更好的AST,可以将其打印到go代码中。
我知道您已经考虑过这一点,但是在结果字符串上使用text/template
和goimports
实际上是很合理的。它更容易编写,并且比编写普通的go代码要好得多。如您所述,它不是类型安全的(这很好,因为稍后在其上运行goimports
会强制执行此操作)。最大的缺点实际上是很难测试(我们最终编写了一组生成的测试和手动书面测试)。
(编辑:刚刚意识到问题有多大了-因为我确定您现在已经找到某种方法可以自己解决这个问题,所以将答案留给其他人使用)