str := new(bytes.Buffer) //old code
printer.Fprint(str, c) //old code
str := new(token.FileSet) //new code
printer.Fprint(os.Stdout, str, c) //new code
source += "\t" + str.String() + ";\n"
在这段代码中,我尝试将str的值从new(bytes.Buffer)更改为new(token.FileSet),因为Fprint的参数需要更新;
func Fprint(output io.Writer, fset *token.FileSet, node interface{}) os.Error //latest ver.
现在,我陷入错误str.String()因为str没有方法String()。
我无法更新我的代码以便在最新版本的Go中运行,因为更改了printer.Fprint()
怎么卷这个?
答案 0 :(得分:1)
这是一个示例程序。
package main
import (
"bytes"
"fmt"
"go/parser"
"go/printer"
"go/token"
)
func main() {
const src = `package main
func main() {}
`
fset := token.NewFileSet()
ast, err := parser.ParseFile(fset, "", src, parser.ParseComments)
if err != nil {
panic(err)
}
var buf bytes.Buffer
printer.Fprint(&buf, fset, ast)
fmt.Print(buf.String())
}
输出:
package main
func main() {}