// +build ignore | |
package main | |
import ( | |
"fmt" | |
"go/ast" | |
"go/parser" | |
"go/token" | |
) | |
func main() { | |
src := `package hack; import "net/http"; var i http.Handler` | |
f, _ := parser.ParseFile(token.NewFileSet(), "", src, 0) | |
decl := f.Decls[1].(*ast.GenDecl) // var i http.Handler | |
spec := decl.Specs[0].(*ast.ValueSpec) // i http.Handler | |
sel := spec.Type.(*ast.SelectorExpr) // http.Handler | |
id := sel.Sel.Name // Handler | |
fmt.Println(id) | |
} |