/*
cat > test1.go << 'EOF'
package foo
var (
a = 10
b = "b"
)
EOF
*/
package main
import (
"fmt"
"go/ast"
"go/parser"
"go/token"
"log"
)
func main() {
node, err := parser.ParseFile(token.NewFileSet(), "test1.go", nil, 0)
if err != nil {
log.Fatal(err)
}
for _, decl := range node.Decls {
if genDecl, ok := decl.(*ast.GenDecl); ok {
if genDecl.Tok == token.VAR {
for _, s := range genDecl.Specs {
vSpec := s.(*ast.ValueSpec)
for _, v := range vSpec.Names {
//fmt.Printf("%T", v.Pos()) // token.Pos
fmt.Printf("%d: %s\n", v.Pos(), v.Name)
}
}
}
}
}
}
On Dec 10, 9:20 pm, D Smithson <d_smith...@rocketmail.com> wrote:
> The FileSet Position method
> (http://golang.org/pkg/go/token/#FileSet.Position) converts a token Pos to
> a token Position.
fs := token.NewFileSet()
node, err := parser.ParseFile(fs, "test1.go", nil, 0)
Then, it can be used "fs.Position(v.Pos())", although it would be
better if could be called Position() from *ast.File (node)