A few small bits of style modernisation, such as using append where it makes the code shorter and more natural.
diff --git a/protoc-gen-go/generator/generator.go b/protoc-gen-go/generator/generator.go index 6df99ea..2d431dc 100644 --- a/protoc-gen-go/generator/generator.go +++ b/protoc-gen-go/generator/generator.go
@@ -803,9 +803,9 @@ // and FileDescriptorProtos into file-referenced objects within the Generator. // It also creates the list of files to generate and so should be called before GenerateAllFiles. func (g *Generator) WrapTypes() { - g.allFiles = make([]*FileDescriptor, len(g.Request.ProtoFile)) + g.allFiles = make([]*FileDescriptor, 0, len(g.Request.ProtoFile)) g.allFilesByName = make(map[string]*FileDescriptor, len(g.allFiles)) - for i, f := range g.Request.ProtoFile { + for _, f := range g.Request.ProtoFile { // We must wrap the descriptors before we wrap the enums descs := wrapDescriptors(f) g.buildNestedDescriptors(descs) @@ -821,22 +821,22 @@ proto3: fileIsProto3(f), } extractComments(fd) - g.allFiles[i] = fd + g.allFiles = append(g.allFiles, fd) g.allFilesByName[f.GetName()] = fd } for _, fd := range g.allFiles { fd.imp = wrapImported(fd.FileDescriptorProto, g) } - g.genFiles = make([]*FileDescriptor, len(g.Request.FileToGenerate)) - for i, fileName := range g.Request.FileToGenerate { - g.genFiles[i] = g.allFilesByName[fileName] - if g.genFiles[i] == nil { + g.genFiles = make([]*FileDescriptor, 0, len(g.Request.FileToGenerate)) + for _, fileName := range g.Request.FileToGenerate { + fd := g.allFilesByName[fileName] + if fd == nil { g.Fail("could not find file named", fileName) } - g.genFiles[i].index = i + fd.index = len(g.genFiles) + g.genFiles = append(g.genFiles, fd) } - g.Response.File = make([]*plugin.CodeGeneratorResponse_File, len(g.genFiles)) } // Scan the descriptors in this file. For each one, build the slice of nested descriptors @@ -900,9 +900,8 @@ } } - d.ext = make([]*ExtensionDescriptor, len(desc.Extension)) - for i, field := range desc.Extension { - d.ext[i] = &ExtensionDescriptor{common{file}, field, d} + for _, field := range desc.Extension { + d.ext = append(d.ext, &ExtensionDescriptor{common{file}, field, d}) } return d @@ -961,9 +960,9 @@ // Return a slice of all the top-level ExtensionDescriptors defined within this file. func wrapExtensions(file *descriptor.FileDescriptorProto) []*ExtensionDescriptor { - sl := make([]*ExtensionDescriptor, len(file.Extension)) - for i, field := range file.Extension { - sl[i] = &ExtensionDescriptor{common{file}, field, nil} + var sl []*ExtensionDescriptor + for _, field := range file.Extension { + sl = append(sl, &ExtensionDescriptor{common{file}, field, nil}) } return sl } @@ -1132,7 +1131,6 @@ for _, file := range g.genFiles { genFileMap[file] = true } - i := 0 for _, file := range g.allFiles { g.Reset() g.writeOutput = genFileMap[file] @@ -1140,10 +1138,10 @@ if !g.writeOutput { continue } - g.Response.File[i] = new(plugin.CodeGeneratorResponse_File) - g.Response.File[i].Name = proto.String(file.goFileName()) - g.Response.File[i].Content = proto.String(g.String()) - i++ + g.Response.File = append(g.Response.File, &plugin.CodeGeneratorResponse_File{ + Name: proto.String(file.goFileName()), + Content: proto.String(g.String()), + }) } }