aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShulhan <m.shulhan@gmail.com>2024-10-26 00:48:33 +0700
committerShulhan <m.shulhan@gmail.com>2026-02-03 18:04:30 +0700
commit011e40da85bddf83fee0ded83cb9115b7a88b3d4 (patch)
tree355cc352e66fc64ce94f17658c31e699aa798bb1 /src
parent85232e51b20971e0d211b25fa3aa412bc7987404 (diff)
downloadgo-011e40da85bddf83fee0ded83cb9115b7a88b3d4.tar.xz
all: prealloc slice with possible minimum capabilities
Diffstat (limited to 'src')
-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/gcc.go6
-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.go2
-rw-r--r--src/cmd/compile/internal/test/ssa_test.go2
-rw-r--r--src/cmd/dist/build.go6
-rw-r--r--src/cmd/go/internal/doc/pkg.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/test/test.go2
-rw-r--r--src/cmd/go/internal/work/build.go2
-rw-r--r--src/cmd/go/internal/work/gc.go2
-rw-r--r--src/cmd/go/internal/work/gccgo.go2
-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/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/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/profile.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.go4
-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
55 files changed, 83 insertions, 76 deletions
diff --git a/src/archive/tar/reader_test.go b/src/archive/tar/reader_test.go
index c7611ca044..5abbf3632e 100644
--- a/src/archive/tar/reader_test.go
+++ b/src/archive/tar/reader_test.go
@@ -791,7 +791,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 5a6689a0eb..e891d26c10 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 ed366be4e7..5bce3fd43b 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 28dce50d60..2ab6aa8ec4 100644
--- a/src/cmd/asm/internal/asm/endtoend_test.go
+++ b/src/cmd/asm/internal/asm/endtoend_test.go
@@ -368,7 +368,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 342ac5ac48..518ba4372a 100644
--- a/src/cmd/asm/internal/lex/input.go
+++ b/src/cmd/asm/internal/lex/input.go
@@ -301,7 +301,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/gcc.go b/src/cmd/cgo/gcc.go
index 300ccae350..f75d87f89e 100644
--- a/src/cmd/cgo/gcc.go
+++ b/src/cmd/cgo/gcc.go
@@ -293,9 +293,11 @@ func (f *File) loadDefines(gccOptions []string) bool {
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/compile/internal/ssa/loopbce.go b/src/cmd/compile/internal/ssa/loopbce.go
index aa6cc48cac..1aa987e5b6 100644
--- a/src/cmd/compile/internal/ssa/loopbce.go
+++ b/src/cmd/compile/internal/ssa/loopbce.go
@@ -84,7 +84,7 @@ func parseIndVar(ind *Value) (min, inc, nxt *Value, loopReturn Edge) {
//
// 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 a0257f3064..d51d41ed30 100644
--- a/src/cmd/compile/internal/ssa/regalloc.go
+++ b/src/cmd/compile/internal/ssa/regalloc.go
@@ -1000,10 +1000,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
@@ -2298,7 +2298,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 8006253145..a459eb4328 100644
--- a/src/cmd/compile/internal/ssa/schedule.go
+++ b/src/cmd/compile/internal/ssa/schedule.go
@@ -460,7 +460,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 17feb90df7..cb0508350f 100644
--- a/src/cmd/compile/internal/ssagen/ssa.go
+++ b/src/cmd/compile/internal/ssagen/ssa.go
@@ -937,7 +937,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()
diff --git a/src/cmd/compile/internal/test/ssa_test.go b/src/cmd/compile/internal/test/ssa_test.go
index 7d213fceca..c4bd28e6e6 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 e4250e12de..91ea7eb498 100644
--- a/src/cmd/dist/build.go
+++ b/src/cmd/dist/build.go
@@ -737,7 +737,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
)
@@ -1967,7 +1967,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
@@ -1990,7 +1990,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/go/internal/doc/pkg.go b/src/cmd/go/internal/doc/pkg.go
index 3c36d0e05c..f965801889 100644
--- a/src/cmd/go/internal/doc/pkg.go
+++ b/src/cmd/go/internal/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/go/internal/load/flag_test.go b/src/cmd/go/internal/load/flag_test.go
index 0c2363cb79..2c27f96529 100644
--- a/src/cmd/go/internal/load/flag_test.go
+++ b/src/cmd/go/internal/load/flag_test.go
@@ -96,7 +96,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 e2a77d7d7d..7f19a99ba2 100644
--- a/src/cmd/go/internal/load/pkg.go
+++ b/src/cmd/go/internal/load/pkg.go
@@ -3269,7 +3269,7 @@ func GoFilesPackage(loaderstate *modload.State, ctx context.Context, opts Packag
// 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 e5c074fa19..3278a821e1 100644
--- a/src/cmd/go/internal/load/test.go
+++ b/src/cmd/go/internal/load/test.go
@@ -110,7 +110,7 @@ func TestPackagesAndErrors(loaderstate *modload.State, ctx context.Context, done
pre.preloadImports(loaderstate, 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
@@ -145,6 +145,7 @@ func TestPackagesAndErrors(loaderstate *modload.State, ctx context.Context, done
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(loaderstate, 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 50f8cb61cc..599845f5d3 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/test/test.go b/src/cmd/go/internal/test/test.go
index 9309aa65ed..354e2b8d69 100644
--- a/src/cmd/go/internal/test/test.go
+++ b/src/cmd/go/internal/test/test.go
@@ -960,7 +960,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/build.go b/src/cmd/go/internal/work/build.go
index 75d05d65de..f2966e9fdd 100644
--- a/src/cmd/go/internal/work/build.go
+++ b/src/cmd/go/internal/work/build.go
@@ -730,7 +730,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/gc.go b/src/cmd/go/internal/work/gc.go
index 6300a9135b..6c85096247 100644
--- a/src/cmd/go/internal/work/gc.go
+++ b/src/cmd/go/internal/work/gc.go
@@ -407,7 +407,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 {
ofile := a.Objdir + sfile[:len(sfile)-len(".s")] + ".o"
ofiles = append(ofiles, ofile)
diff --git a/src/cmd/go/internal/work/gccgo.go b/src/cmd/go/internal/work/gccgo.go
index 276e082b71..3d714ba970 100644
--- a/src/cmd/go/internal/work/gccgo.go
+++ b/src/cmd/go/internal/work/gccgo.go
@@ -197,7 +197,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"
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 6988cea936..bf8d18307c 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 eaf665faee..1acb6804d5 100644
--- a/src/cmd/internal/objfile/macho.go
+++ b/src/cmd/internal/objfile/macho.go
@@ -45,7 +45,7 @@ func (f *machoFile) symbols() ([]Sym, error) {
}
slices.Sort(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 e94821298f..a0f2456ca3 100644
--- a/src/cmd/internal/objfile/pe.go
+++ b/src/cmd/internal/objfile/pe.go
@@ -30,11 +30,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 edd40230ce..648a355f9f 100644
--- a/src/cmd/internal/objfile/plan9obj.go
+++ b/src/cmd/internal/objfile/plan9obj.go
@@ -45,7 +45,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
@@ -54,7 +54,7 @@ func (f *plan9File) symbols() ([]Sym, error) {
}
slices.Sort(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 85928621f1..f1dc5dafa3 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 bcad5add4a..f04c45d18d 100644
--- a/src/cmd/link/internal/ld/lib.go
+++ b/src/cmd/link/internal/ld/lib.go
@@ -2649,8 +2649,9 @@ func ldshlibsyms(ctxt *Link, shlib string) {
Errorf("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 2b303cbdae..353dbd7327 100644
--- a/src/cmd/link/internal/ld/macho_combine_dwarf.go
+++ b/src/cmd/link/internal/ld/macho_combine_dwarf.go
@@ -229,7 +229,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 8edd4ccad8..ee507ca29f 100644
--- a/src/cmd/link/internal/ld/xcoff.go
+++ b/src/cmd/link/internal/ld/xcoff.go
@@ -1353,10 +1353,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 8c0949ec70..85333cea1d 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/vendor/golang.org/x/mod/modfile/rule.go b/src/cmd/vendor/golang.org/x/mod/modfile/rule.go
index c5b8305de7..739e45b034 100644
--- a/src/cmd/vendor/golang.org/x/mod/modfile/rule.go
+++ b/src/cmd/vendor/golang.org/x/mod/modfile/rule.go
@@ -1791,7 +1791,7 @@ func removeDups(syntax *FileSyntax, exclude *[]*Exclude, replace *[]*Replace, to
// 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 117985ac30..3c6b0ffa12 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 7953b615f5..54362ae8f5 100644
--- a/src/crypto/x509/x509.go
+++ b/src/crypto/x509/x509.go
@@ -1152,7 +1152,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
@@ -2016,7 +2016,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/go/build/build.go b/src/go/build/build.go
index 68fb8dbbd7..696638b176 100644
--- a/src/go/build/build.go
+++ b/src/go/build/build.go
@@ -234,8 +234,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 8c01bf0a8d..af5cee0119 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
@@ -550,7 +550,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 e84d6d9a71..8c53026c0f 100644
--- a/src/go/doc/reader.go
+++ b/src/go/doc/reader.go
@@ -915,7 +915,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 fa84ea6070..396eca7ea4 100644
--- a/src/go/types/check_test.go
+++ b/src/go/types/check_test.go
@@ -60,7 +60,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 fd62b7ab88..cfa973d099 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 d8e5de7476..0a54f9ed68 100644
--- a/src/go/types/example_test.go
+++ b/src/go/types/example_test.go
@@ -207,7 +207,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 {
slices.Sort(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 3649189042..a1e0024f0f 100644
--- a/src/go/types/issues_test.go
+++ b/src/go/types/issues_test.go
@@ -160,7 +160,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 680ee69c97..4117ca9fbd 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 b4cc6286a1..c0a0548bf0 100644
--- a/src/go/types/self_test.go
+++ b/src/go/types/self_test.go
@@ -108,7 +108,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 7830029fb2..479cb13db7 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 {
@@ -445,7 +445,7 @@ func pkgFilenames(dir string, includeTest bool) ([]string, error) {
// See go.dev/issue/46027.
return nil, nil
}
- var filenames []string
+ var 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/profile.go b/src/internal/profile/profile.go
index afd1dd72ee..c8529d916d 100644
--- a/src/internal/profile/profile.go
+++ b/src/internal/profile/profile.go
@@ -507,7 +507,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/traceviewer/mmu.go b/src/internal/trace/traceviewer/mmu.go
index 190ce5afca..3de3b7fc2c 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 1ff858a69c..c12d2ca3db 100644
--- a/src/mime/quotedprintable/reader_test.go
+++ b/src/mime/quotedprintable/reader_test.go
@@ -197,7 +197,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 fc1d40f18b..f36446f159 100644
--- a/src/net/dnsclient_unix_test.go
+++ b/src/net/dnsclient_unix_test.go
@@ -1129,7 +1129,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 db6bcddb26..bad2a67f13 100644
--- a/src/net/http/cookiejar/jar.go
+++ b/src/net/http/cookiejar/jar.go
@@ -219,7 +219,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 92bd94f72d..477d341f0b 100644
--- a/src/net/http/fs.go
+++ b/src/net/http/fs.go
@@ -1020,7 +1020,9 @@ 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.SplitSeq(s[len(b):], ",") {
ra = textproto.TrimString(ra)
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 9429442fc0..c4cea7ef87 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 baf4523a7a..cfc45e91ac 100644
--- a/src/runtime/crash_cgo_test.go
+++ b/src/runtime/crash_cgo_test.go
@@ -711,7 +711,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 c87f420f8f..3e96f29cd6 100644
--- a/src/time/sleep_test.go
+++ b/src/time/sleep_test.go
@@ -463,8 +463,8 @@ func testAfterQueuing1(delta Duration, after func(Duration) <-chan Time) 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)