2011-08-13 11 views
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" 

このコードでは、Fprintの引数のリクエスタが新しい(bytes.Buffer)からnew(token.FileSet)に変更しようとしています。 ;
func Fprint(output io.Writer, fset *token.FileSet, node interface{}) os.Error //latest ver.
strにはString()メソッドがないためstr.String()にスタックしています。 printer.Fprint()が変更されたため、Goの最新バージョンで実行するためのコードを更新できません
これをどのようにするには?古いバージョンのprinter.Fprintを変更してGoの最新バージョンを実行するには

答えて

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() {} 
関連する問題