Как изменить принтер. Печать в старой версии, чтобы он мог работать на последней версии Go - PullRequest
0 голосов
/ 14 августа 2011
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 с нового (bytes.Buffer) на новое (token.FileSet), поскольку реквизер аргумента Fprint;
func Fprint(output io.Writer, fset *token.FileSet, node interface{}) os.Error //latest ver.
Теперь я застрял в ошибке str.String (), потому что str не имеет метода String (). Я не могу обновить свой код для запуска в последней версии Go, потому что изменился принтер.Fprint ()
Как это сделать?

1 Ответ

1 голос
/ 14 августа 2011

Вот пример программы.

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() {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...