Go42
Go42 copied to clipboard
第十章关于strings.Join和strings.Builder效率比较的问题
参考源码,Join
本身就是调用了套了一个Builder
来存新字符串,所以这两个效率应该是一样的?
go1.15.2 darwin/amd6
func Join(elems []string, sep string) string {
switch len(elems) {
case 0:
return ""
case 1:
return elems[0]
}
n := len(sep) * (len(elems) - 1)
for i := 0; i < len(elems); i++ {
n += len(elems[i])
}
var b Builder
b.Grow(n)
b.WriteString(elems[0])
for _, s := range elems[1:] {
b.WriteString(sep)
b.WriteString(s)
}
return b.String()
}
~~另外似乎strings.Builder
是个改写版的迷你bytes.Buffer
?~~