Go 字符串优化

122 阅读1分钟

字符串拼接

string.Builder

func builderConcat(n int, str string) string {
	var builder strings.Builder
	for i := 0; i < n; i++ {
		builder.WriteString(str)
	}
	return builder.String()
}

func builderConcat(n int, str string) string {
	var builder strings.Builder
        builder.Grow(n * len(str)) //预分配内存大小
	for i := 0; i < n; i++ {
		builder.WriteString(str)
	}
	return builder.String()
}

bytes.Buffer

func bufferConcat(n int, s string) string {
	buf := new(bytes.Buffer)
	for i := 0; i < n; i++ {
		buf.WriteString(s)
	}
	return buf.String()
}

[]byte

// 长度不确定
func byteConcat(n int, str string) string {
	buf := make([]byte, 0)
	for i := 0; i < n; i++ {
		buf = append(buf, str...)
	}
	return string(buf)
}

// 长度确定
func byteConcat(n int, str string) string {
	buf := make([]byte, 0, n*len(str))
	for i := 0; i < n; i++ {
		buf = append(buf, str...)
	}
	return string(buf)
}