goでstructの定義を見てあれこれしたいことがある。特にコード生成などの文脈が多い。このような時に巷の記事や情報などではASTをがんばって解析するという方法が紹介されている事が多い。それよりもtypes.Package経由で*types.Objectを触ったほうが便利だよという話。 types.Objectとは? go/typesの中に記述されているinterface。以下のような定義になっている(長いけれど実質使うのはName,Type,Stringくらい(ASTへ反映したいときなどにはPosも使う))。 go/types/object.go(定義は長いし読み飛ばしても構わない) // TODO(gri) Document factory, accessor methods, and fields. General clean-up. // An Object describes a