字符串拼接的背景:Go 语言中,字符串是只读的,也就意味着每次修改操作都会创建一个新的字符串。
一共用过五种拼接方法,现针对每种的实现方式,进行效率和使用场景的总结,代码更新中
by +
产生新的字符串,会产生比较多的临时字符串,增加垃圾回收的额外负担
by fmt.Sprintf
是[]byte的实现,内部实现复杂
by strings.join
在已有一个数组的情况下建议使用。
by strings.Builder
尽可能避免扩容的使用,使用Grow()预定义容量,非线程安全的。
by bytes.Buffer
线程安全,对内存增长有优化。