type plugin … func NewPlugin() *plugin { … } func (p *plugin) Name() string { … } func (p *plugin) Init(g *generator.Generator) { … } func (p *plugin) Generate(file *generator.FileDescriptor) { … } func (p *plugin) generateNullableField(fieldname string) { … } func (p *plugin) generateMsgNullAndTypeCheck(ccTypeName string) { … } func (p *plugin) generateField(file *generator.FileDescriptor, message *generator.Descriptor, field *descriptor.FieldDescriptorProto) { … } func (p *plugin) generateMessage(file *generator.FileDescriptor, message *generator.Descriptor) { … } func init() { … }