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

发布于 2024-11-29 08:17:38 字数 526 浏览 2 评论 0原文

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 //最新版本
现在,我陷入了错误 str.String(),因为 str 没有方法 String()。 我无法更新我的代码以在最新版本的 Go 中运行,因为更改了 Printer.Fprint()
这个要怎么转呢?

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"   

In this code i try to change str's value from new(bytes.Buffer) to new(token.FileSet) because Fprint's argument requier;
func Fprint(output io.Writer, fset *token.FileSet, node interface{}) os.Error //latest ver.
now, i'm stucking in error str.String() because str don't have method String().
I cann't update my code for run in latest version of Go because a changed of printer.Fprint()
How to volve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

独留℉清风醉 2024-12-06 08:17:38

这是一个示例程序。

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

Here's a sample program.

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())
}

Output:

package main

func main() {}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文