如何修改旧版本的printer.Fprint可以在最新版本的Go上运行

时间:2011-08-13 20:41:40

标签: go

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()
怎么卷这个?

1 个答案:

答案 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() {}