type plugin … func NewPlugin() *plugin { … } func (p *plugin) Name() string { … } func (p *plugin) Init(g *generator.Generator) { … } var overwriters … func (p *plugin) Generate(file *generator.FileDescriptor) { … } func (p *plugin) checkNameSpace(message *generator.Descriptor) map[string]bool { … } func (p *plugin) checkOverwrite(message *generator.Descriptor, enablers map[string]gogoproto.EnableFunc) { … } func (p *plugin) checkRepeated(message *generator.Descriptor) { … } func (p *plugin) GenerateImports(*generator.FileDescriptor) { … } func init() { … }