1 回答
TA贡献1795条经验 获得超7个赞
不要忽略错误!
添加:
err := printer.Fprint(os.Stdout, fset, f)
if err != nil {
log.Fatal(err)
}
给出:“ go/printer: unsupported node type ast.File ”这应该足以为您指明正确的方向。
printer.Fprint的最后一个参数是interface{}这样编译器接受任何东西。然而,就像parser.ParseFile返回一个*ast.File(而不是ast.File)一样,它需要一个指向节点的指针。
传递一个指针给出你想要的输出(注意&ast.File):
package main
import (
"go/ast"
"go/printer"
"go/token"
"log"
"os"
)
func main() {
f := &ast.File{
Name: ast.NewIdent("foo"),
Decls: []ast.Decl{
&ast.GenDecl{
Tok: token.TYPE,
Specs: []ast.Spec{
&ast.TypeSpec{
Name: ast.NewIdent("Bar"),
Type: ast.NewIdent("uint32"),
},
},
},
},
}
fset := token.NewFileSet()
err := printer.Fprint(os.Stdout, fset, f)
if err != nil {
log.Fatal(err)
}
}
- 1 回答
- 0 关注
- 254 浏览
添加回答
举报