package main
import (
"fmt"
"strings"
)
func badJoin(parts []string) string {
s := ""
for _, p := range parts {
s += p + "," // O(n²) — allocates each iteration
}
return s
}
func goodJoin(parts []string) string {
var b strings.Builder
b.Grow(len(parts) * 16) // optional preallocation
for i, p := range parts {
if i > 0 { b.WriteByte(',') }
b.WriteString(p)
}
return b.String()
}
// Even simpler when you have a slice — strings.Join is built for this
func bestJoin(parts []string) string {
return strings.Join(parts, ",")
}
func main() {
parts := []string{"a", "b", "c", "d"}
fmt.Println(goodJoin(parts)) // a,b,c,d
fmt.Println(bestJoin(parts)) // a,b,c,d
}
Create a free account and build your private vault. Share publicly whenever you want.