aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <m.shulhan@gmail.com>2023-05-02 01:06:11 +0700
committerShulhan <m.shulhan@gmail.com>2024-01-25 04:01:14 +0700
commit8096b47dd09fcda8712f7a3c07dced5244123a4d (patch)
tree26339e20861f0d89cff1cf3dc763d7b99b4aaee8
parent54386c4a7e68ab281545116220600f670e8f9e14 (diff)
downloadgo-8096b47dd09fcda8712f7a3c07dced5244123a4d.tar.xz
all: prealloc slice with possible minimum capabilities
-rw-r--r--src/archive/tar/reader_test.go2
-rw-r--r--src/archive/zip/zip_test.go2
-rw-r--r--src/cmd/api/main_test.go4
-rw-r--r--src/cmd/asm/internal/asm/endtoend_test.go2
-rw-r--r--src/cmd/asm/internal/lex/input.go2
-rw-r--r--src/cmd/cgo/ast.go2
-rw-r--r--src/cmd/cgo/gcc.go6
-rw-r--r--src/cmd/cgo/main.go2
-rw-r--r--src/cmd/compile/internal/ssa/loopbce.go2
-rw-r--r--src/cmd/compile/internal/ssa/regalloc.go10
-rw-r--r--src/cmd/compile/internal/ssa/schedule.go2
-rw-r--r--src/cmd/compile/internal/ssagen/ssa.go4
-rw-r--r--src/cmd/compile/internal/test/ssa_test.go2
-rw-r--r--src/cmd/dist/build.go6
-rw-r--r--src/cmd/doc/pkg.go2
-rw-r--r--src/cmd/fix/typecheck.go2
-rw-r--r--src/cmd/go/internal/base/path.go2
-rw-r--r--src/cmd/go/internal/imports/scan.go2
-rw-r--r--src/cmd/go/internal/load/flag_test.go2
-rw-r--r--src/cmd/go/internal/load/pkg.go2
-rw-r--r--src/cmd/go/internal/load/test.go3
-rw-r--r--src/cmd/go/internal/mvs/mvs.go2
-rw-r--r--src/cmd/go/internal/search/search.go2
-rw-r--r--src/cmd/go/internal/test/test.go2
-rw-r--r--src/cmd/go/internal/work/action.go2
-rw-r--r--src/cmd/go/internal/work/build.go2
-rw-r--r--src/cmd/go/internal/work/exec.go13
-rw-r--r--src/cmd/go/internal/work/gc.go4
-rw-r--r--src/cmd/go/internal/work/gccgo.go4
-rw-r--r--src/cmd/internal/edit/edit.go2
-rw-r--r--src/cmd/internal/objfile/elf.go2
-rw-r--r--src/cmd/internal/objfile/macho.go2
-rw-r--r--src/cmd/internal/objfile/pe.go4
-rw-r--r--src/cmd/internal/objfile/plan9obj.go4
-rw-r--r--src/cmd/internal/objfile/xcoff.go2
-rw-r--r--src/cmd/link/internal/ld/lib.go5
-rw-r--r--src/cmd/link/internal/ld/macho_combine_dwarf.go2
-rw-r--r--src/cmd/link/internal/ld/xcoff.go8
-rw-r--r--src/cmd/link/internal/loadxcoff/ldxcoff.go4
-rw-r--r--src/cmd/trace/annotations.go2
-rw-r--r--src/cmd/trace/annotations_test.go2
-rw-r--r--src/cmd/trace/goroutines.go4
-rw-r--r--src/cmd/vendor/golang.org/x/mod/modfile/rule.go2
-rw-r--r--src/cmd/vendor/golang.org/x/mod/sumdb/dirhash/hash.go2
-rw-r--r--src/crypto/x509/x509.go4
-rw-r--r--src/debug/macho/file.go5
-rw-r--r--src/go/build/build.go5
-rw-r--r--src/go/doc/example.go4
-rw-r--r--src/go/doc/reader.go2
-rw-r--r--src/go/types/check_test.go2
-rw-r--r--src/go/types/eval_test.go2
-rw-r--r--src/go/types/example_test.go2
-rw-r--r--src/go/types/issues_test.go2
-rw-r--r--src/go/types/resolver_test.go2
-rw-r--r--src/go/types/self_test.go2
-rw-r--r--src/go/types/stdlib_test.go4
-rw-r--r--src/internal/profile/filter.go2
-rw-r--r--src/internal/profile/profile.go2
-rw-r--r--src/internal/trace/order.go2
-rw-r--r--src/internal/trace/parser.go2
-rw-r--r--src/internal/trace/traceviewer/mmu.go2
-rw-r--r--src/mime/quotedprintable/reader_test.go2
-rw-r--r--src/net/dnsclient_unix_test.go2
-rw-r--r--src/net/http/cookiejar/jar.go2
-rw-r--r--src/net/http/fs.go6
-rw-r--r--src/net/interface_linux_test.go4
-rw-r--r--src/net/internal/socktest/switch.go2
-rw-r--r--src/runtime/callers_test.go2
-rw-r--r--src/runtime/crash_cgo_test.go2
-rw-r--r--src/time/sleep_test.go4
70 files changed, 113 insertions, 100 deletions
diff --git a/src/archive/tar/reader_test.go b/src/archive/tar/reader_test.go
index 7e0462c3f8..77ef31f313 100644
--- a/src/archive/tar/reader_test.go
+++ b/src/archive/tar/reader_test.go
@@ -772,7 +772,7 @@ func (rbs *readBadSeeker) Seek(int64, int) (int64, error) { return 0, fmt.Errorf
// that truncated files are still detected even if the underlying io.Reader
// satisfies io.Seeker.
func TestReadTruncation(t *testing.T) {
- var ss []string
+ ss := make([]string, 0, 4)
for _, p := range []string{
"testdata/gnu.tar",
"testdata/ustar-file-reg.tar",
diff --git a/src/archive/zip/zip_test.go b/src/archive/zip/zip_test.go
index e7661284e7..ca04c3d7be 100644
--- a/src/archive/zip/zip_test.go
+++ b/src/archive/zip/zip_test.go
@@ -240,8 +240,8 @@ func (r *rleBuffer) ReadAt(p []byte, off int64) (n int, err error) {
// Just testing the rleBuffer used in the Zip64 test above. Not used by the zip code.
func TestRLEBuffer(t *testing.T) {
b := new(rleBuffer)
- var all []byte
writes := []string{"abcdeee", "eeeeeee", "eeeefghaaiii"}
+ all := make([]byte, 0, len(writes)*len(writes[0]))
for _, w := range writes {
b.Write([]byte(w))
all = append(all, w...)
diff --git a/src/cmd/api/main_test.go b/src/cmd/api/main_test.go
index 7985055b5c..1363ade1b9 100644
--- a/src/cmd/api/main_test.go
+++ b/src/cmd/api/main_test.go
@@ -168,7 +168,7 @@ func Check(t *testing.T) {
bw := bufio.NewWriter(os.Stdout)
defer bw.Flush()
- var required []string
+ var required = make([]string, 0, len(checkFiles))
for _, file := range checkFiles {
required = append(required, fileFeatures(file, needApproval(file))...)
}
@@ -657,7 +657,7 @@ func (w *Walker) importFrom(fromPath, fromDir string, mode types.ImportMode) (*a
filenames := append(append([]string{}, info.GoFiles...), info.CgoFiles...)
// Parse package files.
- var files []*ast.File
+ var files = make([]*ast.File, 0, len(filenames))
for _, file := range filenames {
f, err := w.parseFile(dir, file)
if err != nil {
diff --git a/src/cmd/asm/internal/asm/endtoend_test.go b/src/cmd/asm/internal/asm/endtoend_test.go
index 6e1aa1cd95..5981f9ed2c 100644
--- a/src/cmd/asm/internal/asm/endtoend_test.go
+++ b/src/cmd/asm/internal/asm/endtoend_test.go
@@ -363,7 +363,7 @@ func testErrors(t *testing.T, goarch, file string, flags ...string) {
}
delete(errors, fileline)
}
- var extra []string
+ extra := make([]string, 0, len(errors))
for key := range errors {
extra = append(extra, key)
}
diff --git a/src/cmd/asm/internal/lex/input.go b/src/cmd/asm/internal/lex/input.go
index da4ebe6d6e..d9bbd90d82 100644
--- a/src/cmd/asm/internal/lex/input.go
+++ b/src/cmd/asm/internal/lex/input.go
@@ -309,7 +309,7 @@ func (in *Input) invokeMacro(macro *Macro) {
return
}
actuals := in.argsFor(macro)
- var tokens []Token
+ tokens := make([]Token, 0, len(macro.tokens))
for _, tok := range macro.tokens {
if tok.ScanToken != scanner.Ident {
tokens = append(tokens, tok)
diff --git a/src/cmd/cgo/ast.go b/src/cmd/cgo/ast.go
index 3cbbeafdca..861479db7a 100644
--- a/src/cmd/cgo/ast.go
+++ b/src/cmd/cgo/ast.go
@@ -181,7 +181,7 @@ func (f *File) ParseGo(abspath string, src []byte) {
// Like ast.CommentGroup's Text method but preserves
// leading blank lines, so that line numbers line up.
func commentText(g *ast.CommentGroup) string {
- var pieces []string
+ pieces := make([]string, 0, len(g.List))
for _, com := range g.List {
c := com.Text
// Remove comment markers.
diff --git a/src/cmd/cgo/gcc.go b/src/cmd/cgo/gcc.go
index 6e7556de96..e5366435cc 100644
--- a/src/cmd/cgo/gcc.go
+++ b/src/cmd/cgo/gcc.go
@@ -281,9 +281,11 @@ func (p *Package) loadDefines(f *File) {
func (p *Package) guessKinds(f *File) []*Name {
// Determine kinds for names we already know about,
// like #defines or 'struct foo', before bothering with gcc.
- var names, needType []*Name
+ keys := nameKeys(f.Name)
+ names := make([]*Name, 0, len(keys))
+ needType := make([]*Name, 0, len(keys))
optional := map[*Name]bool{}
- for _, key := range nameKeys(f.Name) {
+ for _, key := range keys {
n := f.Name[key]
// If we've already found this name as a #define
// and we can translate it as a constant value, do so.
diff --git a/src/cmd/cgo/main.go b/src/cmd/cgo/main.go
index fce2671c2c..111ccddffc 100644
--- a/src/cmd/cgo/main.go
+++ b/src/cmd/cgo/main.go
@@ -80,7 +80,7 @@ func (f *File) offset(p token.Pos) int {
}
func nameKeys(m map[string]*Name) []string {
- var ks []string
+ ks := make([]string, 0, len(m))
for k := range m {
ks = append(ks, k)
}
diff --git a/src/cmd/compile/internal/ssa/loopbce.go b/src/cmd/compile/internal/ssa/loopbce.go
index dd1f39dbef..931dc60af7 100644
--- a/src/cmd/compile/internal/ssa/loopbce.go
+++ b/src/cmd/compile/internal/ssa/loopbce.go
@@ -83,7 +83,7 @@ func parseIndVar(ind *Value) (min, inc, nxt *Value) {
//
// exit_loop:
func findIndVar(f *Func) []indVar {
- var iv []indVar
+ iv := make([]indVar, 0, len(f.Blocks))
sdom := f.Sdom()
for _, b := range f.Blocks {
diff --git a/src/cmd/compile/internal/ssa/regalloc.go b/src/cmd/compile/internal/ssa/regalloc.go
index 2325b9ee45..e65652c12b 100644
--- a/src/cmd/compile/internal/ssa/regalloc.go
+++ b/src/cmd/compile/internal/ssa/regalloc.go
@@ -892,10 +892,10 @@ var tmpVal Value
func (s *regAllocState) regalloc(f *Func) {
regValLiveSet := f.newSparseSet(f.NumValues()) // set of values that may be live in register
defer f.retSparseSet(regValLiveSet)
- var oldSched []*Value
- var phis []*Value
- var phiRegs []register
- var args []*Value
+ oldSched := make([]*Value, 0, len(s.visitOrder))
+ phis := make([]*Value, 0, len(s.visitOrder))
+ phiRegs := make([]register, 0, len(s.visitOrder))
+ args := make([]*Value, 0, len(s.visitOrder))
// Data structure used for computing desired registers.
var desired desiredState
@@ -2082,7 +2082,7 @@ func (s *regAllocState) placeSpills() {
}
// Insert spill instructions into the block schedules.
- var oldSched []*Value
+ oldSched := make([]*Value, 0, len(s.visitOrder))
for _, b := range s.visitOrder {
nfirst := 0
for _, v := range b.Values {
diff --git a/src/cmd/compile/internal/ssa/schedule.go b/src/cmd/compile/internal/ssa/schedule.go
index fb38f40d63..d67d1d5a0b 100644
--- a/src/cmd/compile/internal/ssa/schedule.go
+++ b/src/cmd/compile/internal/ssa/schedule.go
@@ -440,7 +440,7 @@ func storeOrder(values []*Value, sset *sparseSet, storeNumber []int32) []*Value
}
w = w.MemoryArg()
}
- var stack []*Value
+ stack := make([]*Value, 0, len(values))
for _, v := range values {
if sset.contains(v.ID) {
// in sset means v is a store, or already pushed to stack, or already assigned a store number
diff --git a/src/cmd/compile/internal/ssagen/ssa.go b/src/cmd/compile/internal/ssagen/ssa.go
index df933ec1cf..90388d2b0f 100644
--- a/src/cmd/compile/internal/ssagen/ssa.go
+++ b/src/cmd/compile/internal/ssagen/ssa.go
@@ -753,7 +753,7 @@ func dumpSourcesColumn(writer *ssa.HTMLWriter, fn *ir.Func) {
}
// Read sources of inlined functions.
- var inlFns []*ssa.FuncLines
+ inlFns := make([]*ssa.FuncLines, 0, len(ssaDumpInlined))
for _, fi := range ssaDumpInlined {
elno := fi.Endlineno
fname := base.Ctxt.PosTable.Pos(fi.Pos()).Filename()
@@ -4152,7 +4152,7 @@ type intrinsicKey struct {
func InitTables() {
intrinsics = map[intrinsicKey]intrinsicBuilder{}
- var all []*sys.Arch
+ all := make([]*sys.Arch, 0, len(sys.Archs))
var p4 []*sys.Arch
var p8 []*sys.Arch
var lwatomics []*sys.Arch
diff --git a/src/cmd/compile/internal/test/ssa_test.go b/src/cmd/compile/internal/test/ssa_test.go
index 7f2faa1140..fb397820c7 100644
--- a/src/cmd/compile/internal/test/ssa_test.go
+++ b/src/cmd/compile/internal/test/ssa_test.go
@@ -76,7 +76,6 @@ func TestCode(t *testing.T) {
tmpdir := t.TempDir()
// Find all the test functions (and the files containing them).
- var srcs []string // files containing Test functions
type test struct {
name string // TestFoo
usesFloat bool // might use float operations
@@ -86,6 +85,7 @@ func TestCode(t *testing.T) {
if err != nil {
t.Fatalf("can't read testdata directory: %v", err)
}
+ srcs := make([]string, 0, len(files)) // files containing Test functions
for _, f := range files {
if !strings.HasSuffix(f.Name(), "_test.go") {
continue
diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go
index 96199bcbfa..f778c85475 100644
--- a/src/cmd/dist/build.go
+++ b/src/cmd/dist/build.go
@@ -707,7 +707,7 @@ func runInstall(pkg string, ch chan struct{}) {
// Start final link command line.
// Note: code below knows that link.p[targ] is the target.
var (
- link []string
+ link = make([]string, 0, 1)
targ int
ispackcmd bool
)
@@ -1914,7 +1914,7 @@ func cmdlist() {
brokenFlag := flag.Bool("broken", false, "include broken ports")
xflagparse(0)
- var plats []string
+ plats := make([]string, 0, len(cgoEnabled))
for p := range cgoEnabled {
if broken[p] && !*brokenFlag {
continue
@@ -1937,7 +1937,7 @@ func cmdlist() {
FirstClass bool
Broken bool `json:",omitempty"`
}
- var results []jsonResult
+ results := make([]jsonResult, 0, len(plats))
for _, p := range plats {
fields := strings.Split(p, "/")
results = append(results, jsonResult{
diff --git a/src/cmd/doc/pkg.go b/src/cmd/doc/pkg.go
index a21d8a4688..bef480ab92 100644
--- a/src/cmd/doc/pkg.go
+++ b/src/cmd/doc/pkg.go
@@ -443,7 +443,7 @@ func (pkg *Package) formatTypeParams(list *ast.FieldList, depth int) string {
// oneLineField returns a one-line summary of the field.
func (pkg *Package) oneLineField(field *ast.Field, depth int) string {
- var names []string
+ names := make([]string, 0, len(field.Names))
for _, name := range field.Names {
names = append(names, name.Name)
}
diff --git a/src/cmd/fix/typecheck.go b/src/cmd/fix/typecheck.go
index b115987390..173de52e90 100644
--- a/src/cmd/fix/typecheck.go
+++ b/src/cmd/fix/typecheck.go
@@ -303,7 +303,7 @@ func typecheck(cfg *TypeConfig, f *ast.File) (typeof map[any]string, assign map[
var reportCgoError func(err error)
func makeExprList(a []*ast.Ident) []ast.Expr {
- var b []ast.Expr
+ b := make([]ast.Expr, 0, len(a))
for _, x := range a {
b = append(b, x)
}
diff --git a/src/cmd/go/internal/base/path.go b/src/cmd/go/internal/base/path.go
index 64f213b408..797cb37dd0 100644
--- a/src/cmd/go/internal/base/path.go
+++ b/src/cmd/go/internal/base/path.go
@@ -46,7 +46,7 @@ func ShortPath(path string) string {
// RelPaths returns a copy of paths with absolute paths
// made relative to the current directory if they would be shorter.
func RelPaths(paths []string) []string {
- var out []string
+ out := make([]string, 0, len(paths))
for _, p := range paths {
rel, err := filepath.Rel(Cwd(), p)
if err == nil && len(rel) < len(p) {
diff --git a/src/cmd/go/internal/imports/scan.go b/src/cmd/go/internal/imports/scan.go
index ee11a8708b..e18f28c351 100644
--- a/src/cmd/go/internal/imports/scan.go
+++ b/src/cmd/go/internal/imports/scan.go
@@ -98,7 +98,7 @@ Files:
var ErrNoGo = fmt.Errorf("no Go source files")
func keys(m map[string]bool) []string {
- var list []string
+ list := make([]string, 0, len(m))
for k := range m {
list = append(list, k)
}
diff --git a/src/cmd/go/internal/load/flag_test.go b/src/cmd/go/internal/load/flag_test.go
index d3223e12d5..f0d970421d 100644
--- a/src/cmd/go/internal/load/flag_test.go
+++ b/src/cmd/go/internal/load/flag_test.go
@@ -95,7 +95,7 @@ var ppfTests = []ppfTest{
}
func ppfDirTest(pattern string, nmatch int, dirs ...string) ppfTest {
- var pkgs []ppfTestPackage
+ pkgs := make([]ppfTestPackage, 0, len(dirs))
for i, d := range dirs {
flags := []string{}
if i < nmatch {
diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go
index 1549800afb..b06b597334 100644
--- a/src/cmd/go/internal/load/pkg.go
+++ b/src/cmd/go/internal/load/pkg.go
@@ -3180,7 +3180,7 @@ func GoFilesPackage(ctx context.Context, opts PackageOpts, gofiles []string) *Pa
// to make it look like this is a standard package or
// command directory. So that local imports resolve
// consistently, the files must all be in the same directory.
- var dirent []fs.FileInfo
+ dirent := make([]os.FileInfo, 0, len(gofiles))
var dir string
for _, file := range gofiles {
fi, err := fsys.Stat(file)
diff --git a/src/cmd/go/internal/load/test.go b/src/cmd/go/internal/load/test.go
index d09ababfdd..a35632b2bd 100644
--- a/src/cmd/go/internal/load/test.go
+++ b/src/cmd/go/internal/load/test.go
@@ -109,7 +109,7 @@ func TestPackagesAndErrors(ctx context.Context, done func(), opts PackageOpts, p
pre.preloadImports(ctx, opts, allImports, p.Internal.Build)
var ptestErr, pxtestErr *PackageError
- var imports, ximports []*Package
+ imports := make([]*Package, 0, len(p.TestImports))
var stk ImportStack
var testEmbed, xtestEmbed map[string][]string
var incomplete bool
@@ -144,6 +144,7 @@ func TestPackagesAndErrors(ctx context.Context, done func(), opts PackageOpts, p
pxtestNeedsPtest := false
var pxtestIncomplete bool
rawXTestImports := str.StringList(p.XTestImports)
+ ximports := make([]*Package, 0, len(p.XTestImports))
for i, path := range p.XTestImports {
p1, err := loadImport(ctx, opts, pre, path, p.Dir, p, &stk, p.Internal.Build.XTestImportPos[path], ResolveImport)
if err != nil && pxtestErr == nil {
diff --git a/src/cmd/go/internal/mvs/mvs.go b/src/cmd/go/internal/mvs/mvs.go
index 468a985927..f30677b3b6 100644
--- a/src/cmd/go/internal/mvs/mvs.go
+++ b/src/cmd/go/internal/mvs/mvs.go
@@ -242,7 +242,7 @@ func Req(mainModule module.Version, base []string, reqs Reqs) ([]module.Version,
return nil
}
// First walk the base modules that must be listed.
- var min []module.Version
+ min := make([]module.Version, 0, len(base))
haveBase := map[string]bool{}
for _, path := range base {
if haveBase[path] {
diff --git a/src/cmd/go/internal/search/search.go b/src/cmd/go/internal/search/search.go
index 9f216d5756..e5949d318d 100644
--- a/src/cmd/go/internal/search/search.go
+++ b/src/cmd/go/internal/search/search.go
@@ -399,7 +399,7 @@ func CleanPatterns(patterns []string) []string {
if len(patterns) == 0 {
return []string{"."}
}
- var out []string
+ out := make([]string, 0, len(patterns))
for _, a := range patterns {
var p, v string
if build.IsLocalImport(a) || filepath.IsAbs(a) {
diff --git a/src/cmd/go/internal/test/test.go b/src/cmd/go/internal/test/test.go
index 8a40547f2e..99d1c0a6f8 100644
--- a/src/cmd/go/internal/test/test.go
+++ b/src/cmd/go/internal/test/test.go
@@ -943,7 +943,7 @@ func runTest(ctx context.Context, cmd *base.Command, args []string) {
}
// Collect all the packages imported by the packages being tested.
- allImports := make(map[*load.Package]bool)
+ allImports := make(map[*load.Package]bool, len(pkgs))
for _, p := range pkgs {
if p.Error != nil && p.Error.IsImportCycle {
continue
diff --git a/src/cmd/go/internal/work/action.go b/src/cmd/go/internal/work/action.go
index a59072e591..b4f96988ab 100644
--- a/src/cmd/go/internal/work/action.go
+++ b/src/cmd/go/internal/work/action.go
@@ -208,7 +208,7 @@ func actionGraphJSON(a *Action) string {
}
}
- var list []*actionJSON
+ list := make([]*actionJSON, 0, len(workq))
for id, a := range workq {
if a.json == nil {
a.json = &actionJSON{
diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go
index 408edb5119..60034f3071 100644
--- a/src/cmd/go/internal/work/build.go
+++ b/src/cmd/go/internal/work/build.go
@@ -729,7 +729,7 @@ func runInstall(ctx context.Context, cmd *base.Command, args []string) {
// omitTestOnly returns pkgs with test-only packages removed.
func omitTestOnly(pkgs []*load.Package) []*load.Package {
- var list []*load.Package
+ list := make([]*load.Package, 0, len(pkgs))
for _, p := range pkgs {
if len(p.GoFiles)+len(p.CgoFiles) == 0 && !p.Internal.CmdlinePkgLiteral {
// Package has no source files,
diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
index f6aa2b3534..3200dd76a5 100644
--- a/src/cmd/go/internal/work/exec.go
+++ b/src/cmd/go/internal/work/exec.go
@@ -1069,8 +1069,9 @@ func (b *Builder) loadCachedVet(a *Action) error {
if err != nil {
return fmt.Errorf("reading srcfiles list: %w", err)
}
- var srcfiles []string
- for _, name := range strings.Split(string(list), "\n") {
+ listSplits := strings.Split(string(list), "\n")
+ srcfiles := make([]string, 0, len(listSplits))
+ for _, name := range listSplits {
if name == "" { // end of list
continue
}
@@ -1093,8 +1094,12 @@ func (b *Builder) loadCachedCompiledGoFiles(a *Action) error {
if err != nil {
return fmt.Errorf("reading srcfiles list: %w", err)
}
- var gofiles []string
- for _, name := range strings.Split(string(list), "\n") {
+ var (
+ listSplits = strings.Split(string(list), "\n")
+ gofiles = make([]string, 0, len(listSplits))
+ name string
+ )
+ for _, name = range listSplits {
if name == "" { // end of list
continue
} else if !strings.HasSuffix(name, ".go") {
diff --git a/src/cmd/go/internal/work/gc.go b/src/cmd/go/internal/work/gc.go
index 09ea8259e0..541392ecc0 100644
--- a/src/cmd/go/internal/work/gc.go
+++ b/src/cmd/go/internal/work/gc.go
@@ -387,7 +387,7 @@ func (gcToolchain) asm(b *Builder, a *Action, sfiles []string) ([]string, error)
p := a.Package
args := asmArgs(a, p)
- var ofiles []string
+ ofiles := make([]string, 0, len(sfiles))
for _, sfile := range sfiles {
overlayPath, _ := fsys.OverlayPath(mkAbs(p.Dir, sfile))
ofile := a.Objdir + sfile[:len(sfile)-len(".s")] + ".o"
@@ -463,7 +463,7 @@ func toolVerify(a *Action, b *Builder, p *load.Package, newTool string, ofile st
}
func (gcToolchain) pack(b *Builder, a *Action, afile string, ofiles []string) error {
- var absOfiles []string
+ absOfiles := make([]string, 0, len(ofiles))
for _, f := range ofiles {
absOfiles = append(absOfiles, mkAbs(a.Objdir, f))
}
diff --git a/src/cmd/go/internal/work/gccgo.go b/src/cmd/go/internal/work/gccgo.go
index 2dce9f1ace..e07f866739 100644
--- a/src/cmd/go/internal/work/gccgo.go
+++ b/src/cmd/go/internal/work/gccgo.go
@@ -194,7 +194,7 @@ func buildImportcfgSymlinks(sh *Shell, root string, importcfg []byte) error {
func (tools gccgoToolchain) asm(b *Builder, a *Action, sfiles []string) ([]string, error) {
p := a.Package
- var ofiles []string
+ ofiles := make([]string, 0, len(sfiles))
for _, sfile := range sfiles {
base := filepath.Base(sfile)
ofile := a.Objdir + base[:len(base)-len(".s")] + ".o"
@@ -229,7 +229,7 @@ func (tools gccgoToolchain) pack(b *Builder, a *Action, afile string, ofiles []s
p := a.Package
sh := b.Shell(a)
objdir := a.Objdir
- var absOfiles []string
+ absOfiles := make([]string, 0, len(ofiles))
for _, f := range ofiles {
absOfiles = append(absOfiles, mkAbs(objdir, f))
}
diff --git a/src/cmd/internal/edit/edit.go b/src/cmd/internal/edit/edit.go
index 2d470f4c8a..57c0820eb1 100644
--- a/src/cmd/internal/edit/edit.go
+++ b/src/cmd/internal/edit/edit.go
@@ -71,7 +71,7 @@ func (b *Buffer) Bytes() []byte {
// to be applied before a replacement of the text at [x, y).
sort.Stable(b.q)
- var new []byte
+ new := make([]byte, 0, len(b.q))
offset := 0
for i, e := range b.q {
if e.start < offset {
diff --git a/src/cmd/internal/objfile/elf.go b/src/cmd/internal/objfile/elf.go
index f25e4a65d6..e12e273684 100644
--- a/src/cmd/internal/objfile/elf.go
+++ b/src/cmd/internal/objfile/elf.go
@@ -32,7 +32,7 @@ func (f *elfFile) symbols() ([]Sym, error) {
return nil, err
}
- var syms []Sym
+ syms := make([]Sym, 0, len(elfSyms))
for _, s := range elfSyms {
sym := Sym{Addr: s.Value, Name: s.Name, Size: int64(s.Size), Code: '?'}
switch s.Section {
diff --git a/src/cmd/internal/objfile/macho.go b/src/cmd/internal/objfile/macho.go
index c92497527a..cdea87d9a9 100644
--- a/src/cmd/internal/objfile/macho.go
+++ b/src/cmd/internal/objfile/macho.go
@@ -44,7 +44,7 @@ func (f *machoFile) symbols() ([]Sym, error) {
}
sort.Sort(uint64s(addrs))
- var syms []Sym
+ syms := make([]Sym, 0, len(f.macho.Symtab.Syms))
for _, s := range f.macho.Symtab.Syms {
if s.Type&stabTypeMask != 0 {
// Skip stab debug info.
diff --git a/src/cmd/internal/objfile/pe.go b/src/cmd/internal/objfile/pe.go
index 4c4be1e6b7..df7e5f8cea 100644
--- a/src/cmd/internal/objfile/pe.go
+++ b/src/cmd/internal/objfile/pe.go
@@ -29,11 +29,11 @@ func openPE(r io.ReaderAt) (rawFile, error) {
func (f *peFile) symbols() ([]Sym, error) {
// Build sorted list of addresses of all symbols.
// We infer the size of a symbol by looking at where the next symbol begins.
- var addrs []uint64
+ addrs := make([]uint64, 0, len(f.pe.Symbols))
imageBase, _ := f.imageBase()
- var syms []Sym
+ syms := make([]Sym, 0, len(f.pe.Symbols))
for _, s := range f.pe.Symbols {
const (
N_UNDEF = 0 // An undefined (extern) symbol
diff --git a/src/cmd/internal/objfile/plan9obj.go b/src/cmd/internal/objfile/plan9obj.go
index da0b345f53..86d052ec4d 100644
--- a/src/cmd/internal/objfile/plan9obj.go
+++ b/src/cmd/internal/objfile/plan9obj.go
@@ -44,7 +44,7 @@ func (f *plan9File) symbols() ([]Sym, error) {
// Build sorted list of addresses of all symbols.
// We infer the size of a symbol by looking at where the next symbol begins.
- var addrs []uint64
+ addrs := make([]uint64, 0, len(plan9Syms))
for _, s := range plan9Syms {
if !validSymType[s.Type] {
continue
@@ -53,7 +53,7 @@ func (f *plan9File) symbols() ([]Sym, error) {
}
sort.Sort(uint64s(addrs))
- var syms []Sym
+ syms := make([]Sym, 0, len(plan9Syms))
for _, s := range plan9Syms {
if !validSymType[s.Type] {
diff --git a/src/cmd/internal/objfile/xcoff.go b/src/cmd/internal/objfile/xcoff.go
index d6df4db8f0..fc32fc7c19 100644
--- a/src/cmd/internal/objfile/xcoff.go
+++ b/src/cmd/internal/objfile/xcoff.go
@@ -27,7 +27,7 @@ func openXcoff(r io.ReaderAt) (rawFile, error) {
}
func (f *xcoffFile) symbols() ([]Sym, error) {
- var syms []Sym
+ syms := make([]Sym, 0, len(f.xcoff.Symbols))
for _, s := range f.xcoff.Symbols {
const (
N_UNDEF = 0 // An undefined (extern) symbol
diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
index 0219beeb10..0db830e2c8 100644
--- a/src/cmd/link/internal/ld/lib.go
+++ b/src/cmd/link/internal/ld/lib.go
@@ -2528,8 +2528,9 @@ func ldshlibsyms(ctxt *Link, shlib string) {
Errorf(nil, "cannot read dep list from shared library %s: %v", libpath, err)
return
}
- var deps []string
- for _, dep := range strings.Split(string(depsbytes), "\n") {
+ depsSplit := strings.Split(string(depsbytes), "\n")
+ deps := make([]string, 0, len(depsSplit))
+ for _, dep := range depsSplit {
if dep == "" {
continue
}
diff --git a/src/cmd/link/internal/ld/macho_combine_dwarf.go b/src/cmd/link/internal/ld/macho_combine_dwarf.go
index 2e8bfcdbed..4fb3465fe8 100644
--- a/src/cmd/link/internal/ld/macho_combine_dwarf.go
+++ b/src/cmd/link/internal/ld/macho_combine_dwarf.go
@@ -256,7 +256,7 @@ func machoCompressSections(ctxt *Link, dwarfm *macho.File) ([]*macho.Section, []
}
dwarfseg := dwarfm.Segment("__DWARF")
- var sects []*macho.Section
+ sects := make([]*macho.Section, 0, len(dwarfm.Sections))
var buf bytes.Buffer
for _, sect := range dwarfm.Sections {
diff --git a/src/cmd/link/internal/ld/xcoff.go b/src/cmd/link/internal/ld/xcoff.go
index d915ab393b..1ddd3a630b 100644
--- a/src/cmd/link/internal/ld/xcoff.go
+++ b/src/cmd/link/internal/ld/xcoff.go
@@ -1355,10 +1355,10 @@ func Loaderblk(ctxt *Link, off uint64) {
}
func (f *xcoffFile) writeLdrScn(ctxt *Link, globalOff uint64) {
- var symtab []*XcoffLdSym64
- var strtab []*XcoffLdStr64
- var importtab []*XcoffLdImportFile64
- var reloctab []*XcoffLdRel64
+ symtab := make([]*XcoffLdSym64, 0, len(f.loaderSymbols))
+ strtab := make([]*XcoffLdStr64, 0, len(f.loaderSymbols))
+ importtab := make([]*XcoffLdImportFile64, 0, len(f.dynLibraries))
+ reloctab := make([]*XcoffLdRel64, 0, len(f.loaderReloc))
var dynimpreloc []*XcoffLdRel64
// As the string table is updated in any loader subsection,
diff --git a/src/cmd/link/internal/loadxcoff/ldxcoff.go b/src/cmd/link/internal/loadxcoff/ldxcoff.go
index 29d162596a..50b472047a 100644
--- a/src/cmd/link/internal/loadxcoff/ldxcoff.go
+++ b/src/cmd/link/internal/loadxcoff/ldxcoff.go
@@ -46,14 +46,14 @@ func Load(l *loader.Loader, arch *sys.Arch, localSymVersion int, input *bio.Read
return nil, fmt.Errorf("loadxcoff: %v: %v", pn, fmt.Sprintf(str, args...))
}
- var ldSections []*ldSection
-
f, err := xcoff.NewFile((*xcoffBiobuf)(input))
if err != nil {
return nil, err
}
defer f.Close()
+ ldSections := make([]*ldSection, 0, len(f.Sections))
+
for _, sect := range f.Sections {
//only text, data and bss section
if sect.Type < xcoff.STYP_TEXT || sect.Type > xcoff.STYP_BSS {
diff --git a/src/cmd/trace/annotations.go b/src/cmd/trace/annotations.go
index df194a7598..bc586cb551 100644
--- a/src/cmd/trace/annotations.go
+++ b/src/cmd/trace/annotations.go
@@ -194,7 +194,7 @@ func httpUserTask(w http.ResponseWriter, r *http.Request) {
base := time.Duration(firstTimestamp()) * time.Nanosecond // trace start
- var data []entry
+ data := make([]entry, 0, len(tasks))
for _, task := range tasks {
if !filter.match(task) {
diff --git a/src/cmd/trace/annotations_test.go b/src/cmd/trace/annotations_test.go
index 36d3ec9d6d..8707cd5058 100644
--- a/src/cmd/trace/annotations_test.go
+++ b/src/cmd/trace/annotations_test.go
@@ -149,7 +149,7 @@ func TestAnalyzeAnnotations(t *testing.T) {
"task0.region1",
"task0.region2",
}
- var gotRegions []string
+ gotRegions := make([]string, 0, len(res.regions))
for regionID := range res.regions {
gotRegions = append(gotRegions, regionID.Type)
}
diff --git a/src/cmd/trace/goroutines.go b/src/cmd/trace/goroutines.go
index 28eace82fa..ede7604056 100644
--- a/src/cmd/trace/goroutines.go
+++ b/src/cmd/trace/goroutines.go
@@ -61,7 +61,7 @@ func httpGoroutines(w http.ResponseWriter, r *http.Request) {
gs1.ExecTime += g.ExecTime
gss[g.PC] = gs1
}
- var glist []gtype
+ glist := make([]gtype, 0, len(gss))
for k, v := range gss {
v.ID = k
// If goroutine didn't run during the trace (no sampled PC),
@@ -107,7 +107,7 @@ func httpGoroutine(w http.ResponseWriter, r *http.Request) {
}
analyzeGoroutines(events)
var (
- glist []*trace.GDesc
+ glist = make([]*trace.GDesc, 0, len(gs))
name string
totalExecTime, execTime int64
maxTotalTime int64
diff --git a/src/cmd/vendor/golang.org/x/mod/modfile/rule.go b/src/cmd/vendor/golang.org/x/mod/modfile/rule.go
index 35fd1f534c..cc91a8d430 100644
--- a/src/cmd/vendor/golang.org/x/mod/modfile/rule.go
+++ b/src/cmd/vendor/golang.org/x/mod/modfile/rule.go
@@ -1549,7 +1549,7 @@ func removeDups(syntax *FileSyntax, exclude *[]*Exclude, replace *[]*Replace) {
// Duplicate require and retract directives are not removed.
// Drop killed statements from the syntax tree.
- var stmts []Expr
+ stmts := make([]Expr, 0, len(syntax.Stmt))
for _, stmt := range syntax.Stmt {
switch stmt := stmt.(type) {
case *Line:
diff --git a/src/cmd/vendor/golang.org/x/mod/sumdb/dirhash/hash.go b/src/cmd/vendor/golang.org/x/mod/sumdb/dirhash/hash.go
index 51ec4db873..7cd05740db 100644
--- a/src/cmd/vendor/golang.org/x/mod/sumdb/dirhash/hash.go
+++ b/src/cmd/vendor/golang.org/x/mod/sumdb/dirhash/hash.go
@@ -118,7 +118,7 @@ func HashZip(zipfile string, hash Hash) (string, error) {
return "", err
}
defer z.Close()
- var files []string
+ files := make([]string, 0, len(z.File))
zfiles := make(map[string]*zip.File)
for _, file := range z.File {
files = append(files, file.Name)
diff --git a/src/crypto/x509/x509.go b/src/crypto/x509/x509.go
index f33283b559..e93760c4f9 100644
--- a/src/crypto/x509/x509.go
+++ b/src/crypto/x509/x509.go
@@ -1059,7 +1059,7 @@ func oidInExtensions(oid asn1.ObjectIdentifier, extensions []pkix.Extension) boo
// marshalSANs marshals a list of addresses into a the contents of an X.509
// SubjectAlternativeName extension.
func marshalSANs(dnsNames, emailAddresses []string, ipAddresses []net.IP, uris []*url.URL) (derBytes []byte, err error) {
- var rawValues []asn1.RawValue
+ rawValues := make([]asn1.RawValue, 0, len(dnsNames))
for _, name := range dnsNames {
if err := isIA5String(name); err != nil {
return nil, err
@@ -1920,7 +1920,7 @@ func parseCSRExtensions(rawAttributes []asn1.RawValue) ([]pkix.Extension, error)
Values []asn1.RawValue `asn1:"set"`
}
- var ret []pkix.Extension
+ var ret = make([]pkix.Extension, 0, len(rawAttributes))
requestedExts := make(map[string]bool)
for _, rawAttr := range rawAttributes {
var attr pkcs10Attribute
diff --git a/src/debug/macho/file.go b/src/debug/macho/file.go
index 7b11bb2954..3298771619 100644
--- a/src/debug/macho/file.go
+++ b/src/debug/macho/file.go
@@ -707,8 +707,9 @@ func (f *File) ImportedSymbols() ([]string, error) {
st := f.Symtab
dt := f.Dysymtab
- var all []string
- for _, s := range st.Syms[dt.Iundefsym : dt.Iundefsym+dt.Nundefsym] {
+ symbols := st.Syms[dt.Iundefsym : dt.Iundefsym+dt.Nundefsym]
+ all := make([]string, 0, len(symbols))
+ for _, s := range symbols {
all = append(all, s.Name)
}
return all, nil
diff --git a/src/go/build/build.go b/src/go/build/build.go
index 9ce3700dc4..b63d55d5b8 100644
--- a/src/go/build/build.go
+++ b/src/go/build/build.go
@@ -232,8 +232,9 @@ func (ctxt *Context) isFile(path string) bool {
// gopath returns the list of Go path directories.
func (ctxt *Context) gopath() []string {
- var all []string
- for _, p := range ctxt.splitPathList(ctxt.GOPATH) {
+ gopaths := ctxt.splitPathList(ctxt.GOPATH)
+ all := make([]string, 0, len(gopaths))
+ for _, p := range gopaths {
if p == "" || p == ctxt.GOROOT {
// Empty paths are uninteresting.
// If the path is the GOROOT, ignore it.
diff --git a/src/go/doc/example.go b/src/go/doc/example.go
index 6687ba8614..78d0def3cb 100644
--- a/src/go/doc/example.go
+++ b/src/go/doc/example.go
@@ -48,7 +48,7 @@ type Example struct {
// least one top-level function, type, variable, or constant declaration
// other than the example function.
func Examples(testFiles ...*ast.File) []*Example {
- var list []*Example
+ var list []*Example = make([]*Example, 0, len(testFiles))
for _, file := range testFiles {
hasTests := false // file contains tests, fuzz test, or benchmarks
numDecl := 0 // number of non-import declarations in the file
@@ -548,7 +548,7 @@ func playExampleFile(file *ast.File) *ast.File {
}
// Copy declaration slice, rewriting the ExampleX function to main.
- var decls []ast.Decl
+ decls := make([]ast.Decl, 0, len(file.Decls))
for _, d := range file.Decls {
if f, ok := d.(*ast.FuncDecl); ok && isTest(f.Name.Name, "Example") {
// Copy the FuncDecl, as it may be used elsewhere.
diff --git a/src/go/doc/reader.go b/src/go/doc/reader.go
index 8f9fda41ff..f8626c6d7c 100644
--- a/src/go/doc/reader.go
+++ b/src/go/doc/reader.go
@@ -936,7 +936,7 @@ func sortedFuncs(m methodSet, allMethods bool) []*Func {
// noteBodies returns a list of note body strings given a list of notes.
// This is only used to populate the deprecated Package.Bugs field.
func noteBodies(notes []*Note) []string {
- var list []string
+ list := make([]string, 0, len(notes))
for _, n := range notes {
list = append(list, n.Body)
}
diff --git a/src/go/types/check_test.go b/src/go/types/check_test.go
index fc9723a67f..c2d84781ab 100644
--- a/src/go/types/check_test.go
+++ b/src/go/types/check_test.go
@@ -61,7 +61,7 @@ var (
var fset = token.NewFileSet()
func parseFiles(t *testing.T, filenames []string, srcs [][]byte, mode parser.Mode) ([]*ast.File, []error) {
- var files []*ast.File
+ files := make([]*ast.File, 0, len(filenames))
var errlist []error
for i, filename := range filenames {
file, err := parser.ParseFile(fset, filename, srcs[i], mode)
diff --git a/src/go/types/eval_test.go b/src/go/types/eval_test.go
index dd9bd7f426..d4bcc44148 100644
--- a/src/go/types/eval_test.go
+++ b/src/go/types/eval_test.go
@@ -166,7 +166,7 @@ func TestEvalPos(t *testing.T) {
}
fset := token.NewFileSet()
- var files []*ast.File
+ files := make([]*ast.File, 0, len(sources))
for i, src := range sources {
file, err := parser.ParseFile(fset, "p", src, parser.ParseComments)
if err != nil {
diff --git a/src/go/types/example_test.go b/src/go/types/example_test.go
index 1ee47bc123..1891f1c869 100644
--- a/src/go/types/example_test.go
+++ b/src/go/types/example_test.go
@@ -209,7 +209,7 @@ func fib(x int) int {
lineCol := fmt.Sprintf("%d:%d", posn.Line, posn.Column)
usesByObj[obj] = append(usesByObj[obj], lineCol)
}
- var items []string
+ items := make([]string, 0, len(usesByObj))
for obj, uses := range usesByObj {
sort.Strings(uses)
item := fmt.Sprintf("%s:\n defined at %s\n used at %s",
diff --git a/src/go/types/issues_test.go b/src/go/types/issues_test.go
index 6f9d5978e7..fb6aa231d5 100644
--- a/src/go/types/issues_test.go
+++ b/src/go/types/issues_test.go
@@ -161,7 +161,7 @@ L7 uses var z int`
t.Errorf("Check: unexpected error: %s", s)
}
- var facts []string
+ facts := make([]string, 0, len(defs))
for id, obj := range defs {
if obj != nil {
fact := fmt.Sprintf("L%d defs %s", fset.Position(id.Pos()).Line, obj)
diff --git a/src/go/types/resolver_test.go b/src/go/types/resolver_test.go
index e95af80585..659896ed39 100644
--- a/src/go/types/resolver_test.go
+++ b/src/go/types/resolver_test.go
@@ -118,7 +118,7 @@ func TestResolveIdents(t *testing.T) {
// parse package files
fset := token.NewFileSet()
- var files []*ast.File
+ var files = make([]*ast.File, 0, len(sources))
for _, src := range sources {
files = append(files, mustParse(fset, src))
}
diff --git a/src/go/types/self_test.go b/src/go/types/self_test.go
index 27fa75652a..165929b96e 100644
--- a/src/go/types/self_test.go
+++ b/src/go/types/self_test.go
@@ -109,7 +109,7 @@ func pkgFiles(fset *token.FileSet, path string) ([]*ast.File, error) {
return nil, err
}
- var files []*ast.File
+ files := make([]*ast.File, 0, len(filenames))
for _, filename := range filenames {
file, err := parser.ParseFile(fset, filename, nil, 0)
if err != nil {
diff --git a/src/go/types/stdlib_test.go b/src/go/types/stdlib_test.go
index a89cd858db..06aa870734 100644
--- a/src/go/types/stdlib_test.go
+++ b/src/go/types/stdlib_test.go
@@ -373,7 +373,7 @@ func typecheckFiles(path string, filenames []string, importer Importer) (*Packag
fset := token.NewFileSet()
// Parse package files.
- var files []*ast.File
+ var files = make([]*ast.File, 0, len(filenames))
for _, filename := range filenames {
file, err := parser.ParseFile(fset, filename, nil, parser.AllErrors)
if err != nil {
@@ -440,7 +440,7 @@ func pkgFilenames(dir string, includeTest bool) ([]string, error) {
if excluded[pkg.ImportPath] {
return nil, nil
}
- var filenames []string
+ filenames := make([]string, 0, len(pkg.GoFiles))
for _, name := range pkg.GoFiles {
filenames = append(filenames, filepath.Join(pkg.Dir, name))
}
diff --git a/src/internal/profile/filter.go b/src/internal/profile/filter.go
index 141dd1f405..3897b97f00 100644
--- a/src/internal/profile/filter.go
+++ b/src/internal/profile/filter.go
@@ -74,7 +74,7 @@ func (loc *Location) matchesName(re *regexp.Regexp) bool {
// unmatchedLines returns the lines in the location that do not match
// the regular expression.
func (loc *Location) unmatchedLines(re *regexp.Regexp) []Line {
- var lines []Line
+ lines := make([]Line, 0, len(loc.Line))
for _, ln := range loc.Line {
if fn := ln.Function; fn != nil {
if re.MatchString(fn.Name) {
diff --git a/src/internal/profile/profile.go b/src/internal/profile/profile.go
index 02d1bed3de..5d197341a1 100644
--- a/src/internal/profile/profile.go
+++ b/src/internal/profile/profile.go
@@ -561,7 +561,7 @@ type Demangler func(name []string) (map[string]string, error)
// it will silently preserve the original names in case of any errors.
func (p *Profile) Demangle(d Demangler) error {
// Collect names to demangle.
- var names []string
+ names := make([]string, 0, len(p.Function))
for _, fn := range p.Function {
names = append(names, fn.SystemName)
}
diff --git a/src/internal/trace/order.go b/src/internal/trace/order.go
index 07a6e13ffe..5c6e78b285 100644
--- a/src/internal/trace/order.go
+++ b/src/internal/trace/order.go
@@ -58,7 +58,7 @@ func order1007(m map[int][]*Event) (events []*Event, err error) {
// off of the profBuf queue. Re-sort them by the timestamp we captured
// inside the signal handler.
sort.Stable(eventList(m[ProfileP]))
- var batches []*eventBatch
+ batches := make([]*eventBatch, 0, len(m))
for _, v := range m {
pending += len(v)
batches = append(batches, &eventBatch{v, false})
diff --git a/src/internal/trace/parser.go b/src/internal/trace/parser.go
index 3bbfbebab4..a263421792 100644
--- a/src/internal/trace/parser.go
+++ b/src/internal/trace/parser.go
@@ -914,7 +914,7 @@ func symbolize(events []*Event, bin string) error {
// Write all pcs to addr2line.
// Need to copy pcs to an array, because map iteration order is non-deterministic.
- var pcArray []uint64
+ pcArray := make([]uint64, 0, len(pcs))
for pc := range pcs {
pcArray = append(pcArray, pc)
_, err := fmt.Fprintf(in, "0x%x\n", pc-1)
diff --git a/src/internal/trace/traceviewer/mmu.go b/src/internal/trace/traceviewer/mmu.go
index 0bc1233b44..fe21bfe2d8 100644
--- a/src/internal/trace/traceviewer/mmu.go
+++ b/src/internal/trace/traceviewer/mmu.go
@@ -385,7 +385,7 @@ func (m *mmu) HandleDetails(w http.ResponseWriter, r *http.Request) {
worst := mmuCurve.Examples(time.Duration(window), 10)
// Construct a link for each window.
- var links []linkedUtilWindow
+ links := make([]linkedUtilWindow, 0, len(worst))
for _, ui := range worst {
links = append(links, m.newLinkedUtilWindow(ui, time.Duration(window)))
}
diff --git a/src/mime/quotedprintable/reader_test.go b/src/mime/quotedprintable/reader_test.go
index 0af1e5f0f7..01647840d4 100644
--- a/src/mime/quotedprintable/reader_test.go
+++ b/src/mime/quotedprintable/reader_test.go
@@ -193,7 +193,7 @@ func TestExhaustive(t *testing.T) {
}
res["OK"]++
})
- var outcomes []string
+ outcomes := make([]string, 0, len(res))
for k, v := range res {
outcomes = append(outcomes, fmt.Sprintf("%v: %d", k, v))
}
diff --git a/src/net/dnsclient_unix_test.go b/src/net/dnsclient_unix_test.go
index 0da36303cc..2889a2c389 100644
--- a/src/net/dnsclient_unix_test.go
+++ b/src/net/dnsclient_unix_test.go
@@ -1054,7 +1054,7 @@ func testRotate(t *testing.T, rotate bool, nameservers, wantServers []string) {
}
defer conf.teardown()
- var confLines []string
+ confLines := make([]string, 0, len(nameservers))
for _, ns := range nameservers {
confLines = append(confLines, "nameserver "+ns)
}
diff --git a/src/net/http/cookiejar/jar.go b/src/net/http/cookiejar/jar.go
index 59cde82cb3..8a6b34ced8 100644
--- a/src/net/http/cookiejar/jar.go
+++ b/src/net/http/cookiejar/jar.go
@@ -184,7 +184,7 @@ func (j *Jar) cookies(u *url.URL, now time.Time) (cookies []*http.Cookie) {
}
modified := false
- var selected []entry
+ selected := make([]entry, 0, len(submap))
for id, e := range submap {
if e.Persistent && !e.Expires.After(now) {
delete(submap, id)
diff --git a/src/net/http/fs.go b/src/net/http/fs.go
index af7511a7a4..45187eea14 100644
--- a/src/net/http/fs.go
+++ b/src/net/http/fs.go
@@ -961,9 +961,11 @@ func parseRange(s string, size int64) ([]httpRange, error) {
if !strings.HasPrefix(s, b) {
return nil, errors.New("invalid range")
}
- var ranges []httpRange
+
+ splits := strings.Split(s[len(b):], ",")
+ ranges := make([]httpRange, 0, len(splits))
noOverlap := false
- for _, ra := range strings.Split(s[len(b):], ",") {
+ for _, ra := range splits {
ra = textproto.TrimString(ra)
if ra == "" {
continue
diff --git a/src/net/interface_linux_test.go b/src/net/interface_linux_test.go
index 0699fec636..a9b274cd02 100644
--- a/src/net/interface_linux_test.go
+++ b/src/net/interface_linux_test.go
@@ -113,7 +113,7 @@ func TestParseProcNet(t *testing.T) {
}
}()
- var ifmat4 []Addr
+ ifmat4 := make([]Addr, 0, len(igmpInterfaceTable))
for _, ifi := range igmpInterfaceTable {
ifmat := parseProcNetIGMP("testdata/igmp", &ifi)
ifmat4 = append(ifmat4, ifmat...)
@@ -122,7 +122,7 @@ func TestParseProcNet(t *testing.T) {
t.Fatalf("got %d; want %d", len(ifmat4), numOfTestIPv4MCAddrs)
}
- var ifmat6 []Addr
+ ifmat6 := make([]Addr, 0, len(igmp6InterfaceTable))
for _, ifi := range igmp6InterfaceTable {
ifmat := parseProcNetIGMP6("testdata/igmp6", &ifi)
ifmat6 = append(ifmat6, ifmat...)
diff --git a/src/net/internal/socktest/switch.go b/src/net/internal/socktest/switch.go
index dea6d9288c..1eb39b99ad 100644
--- a/src/net/internal/socktest/switch.go
+++ b/src/net/internal/socktest/switch.go
@@ -31,8 +31,8 @@ func (sw *Switch) init() {
// Stats returns a list of per-cookie socket statistics.
func (sw *Switch) Stats() []Stat {
- var st []Stat
sw.smu.RLock()
+ st := make([]Stat, 0, len(sw.stats))
for _, s := range sw.stats {
ns := *s
st = append(st, ns)
diff --git a/src/runtime/callers_test.go b/src/runtime/callers_test.go
index 49a1d5a6f7..399be37a16 100644
--- a/src/runtime/callers_test.go
+++ b/src/runtime/callers_test.go
@@ -40,7 +40,7 @@ func testCallers(t *testing.T, pcs []uintptr, pan bool) {
}
}
- var seen []string
+ seen := make([]string, 0, len(m))
for k := range m {
seen = append(seen, k)
}
diff --git a/src/runtime/crash_cgo_test.go b/src/runtime/crash_cgo_test.go
index 304f1a7554..8a7b3236ed 100644
--- a/src/runtime/crash_cgo_test.go
+++ b/src/runtime/crash_cgo_test.go
@@ -598,7 +598,7 @@ func TestBigStackCallbackCgo(t *testing.T) {
}
func nextTrace(lines []string) ([]string, []string) {
- var trace []string
+ trace := make([]string, 0, len(lines))
for n, line := range lines {
if strings.HasPrefix(line, "---") {
return trace, lines[n+1:]
diff --git a/src/time/sleep_test.go b/src/time/sleep_test.go
index b25606dfed..201a390642 100644
--- a/src/time/sleep_test.go
+++ b/src/time/sleep_test.go
@@ -373,8 +373,8 @@ func testAfterQueuing(delta Duration) error {
for _, slot := range slots {
go await(slot, result, After(Duration(slot)*delta))
}
- var order []int
- var times []Time
+ order := make([]int, 0, len(slots))
+ times := make([]Time, 0, len(slots))
for range slots {
r := <-result
order = append(order, r.slot)