参考源码,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?