Hi, I'm trying to parse a file (or rather more files, but let's keep it simple).
package models import "github.com/globalsign/mgo/bson" type Community struct { Id bson.ObjectId `bson:"_id,omitempty" json:"id"` OwnerId string `bson:"owner_id" json:"owner_id"` CategorySlug string `bson:"category_slug" json:"category_slug"` Name string `bson:"name" json:"name"` Description string `bson:"description" json:"description"` Subdomain string `bson:"subdomain" json:"subdomain"` Domain string `bson:"domain" json:"domain"` } and I essentiall do ast.Inspect(v, func(node ast.Node) bool { switch n := node.(type) { case *ast.TypeSpec: m.Name = n.Name.String() case *ast.Field: fmt.Println("******************0") fmt.Println("IS_FIELD", n, "END") fmt.Println(n.Names) fmt.Printf("%+v\n", n.Type) switch nn := n.Type.(type) { default: fmt.Printf("%+v", nn) } fmt.Println(n.Doc) fmt.Println(n.Comment) fmt.Printf("%+v\n", n.Tag) fmt.Println("******************1") default: fmt.Println(n, "END") } return true }) but you see, Id is type bson.ObjectId and the output of it is different from it being a string &{X:bson Sel:ObjectId} where a string is just a string with "string" content, at least that's what I assume. What type is "nn" here? How do I find that out short of trying all *ast.Types. The doc just says Type Expr <https://golang.org/pkg/go/ast/#Expr> // field/method/parameter type but "Expr" is a generic term with a description of "All expression nodes implement the Expr interface." https://golang.org/pkg/go/ast/#Expr Well carefully browsing the documentation here I can somewhat guess from the fields that &{X:bson Sel:ObjectId} is a *ast.SelectorExpr https://golang.org/pkg/go/ast/#SelectorExpr but what is a plain field type? Is there a surefire method to find that out short of typechecking every possible type? -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.