今天在测试性能时,需要拼接一段字符串,发现string类型用 + 号拼接会比将字符串装进 切片中,再用strings.join()方法生成需要的字符串慢很多倍。string是一个不可变类型,每次都会创建一个新的 string 类型的值,然后重新赋值给这个变量。
最快的应该是使用strings.Builder来构建,因为直接通过指针来操作了。
附上源码
// String returns the accumulated string.
func (b *Builder) String() string {
return *(*string)(unsafe.Pointer(&b.buf))
}