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 [email protected].
For more options, visit https://groups.google.com/d/optout.