From cade3efe6f7a3e97e94fde7f0d5ebb3fa73c46ee Mon Sep 17 00:00:00 2001 From: bth Date: Wed, 21 Jan 2026 13:06:18 -0800 Subject: [PATCH] cat : fix previous : the make allocation was all wrong, use strings.Builder in place of strings.Join --- cat/cat.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cat/cat.go b/cat/cat.go index bfd7448..27f7ee3 100644 --- a/cat/cat.go +++ b/cat/cat.go @@ -30,6 +30,7 @@ func initOpts() options { } func cat(files []string) (string, error) { + sb := strings.Builder{} var total int64 for _, f := range files { stat, err := os.Stat(f) @@ -40,15 +41,16 @@ func cat(files []string) (string, error) { total += stat.Size() } } - ff := make([]string, 0, total) + sb.Grow(int(total)) + for _, f := range files { dat, err := os.ReadFile(f) if err != nil { return "", fmt.Errorf("error opening file: %w", err) } - ff = append(ff, string(dat)) + sb.WriteString(fmt.Sprintf("%s%s", dat, SEPARATOR)) } - return strings.Join(ff, SEPARATOR), nil + return strings.TrimSuffix(sb.String(), SEPARATOR), nil } func Cat(args []string) {