字符串
GO语言中的字符串是由UTF-8编码的,所以GO语言字符串是变宽字符序列,每一个字符都用1到4个字节表示。
字符串不可变
字符串的值是不可变的,意味着:
如果两个字符串共享相同的底层数据的话也是安全的,这使得复制任何长度的字符串代价是低廉的。
同样,一个字符串s和对应的子字符串切片s[7:]的操作也可以安全地共享相同的内存,因此字符串切片操作代价也是低廉的。
在这两种情况下都没有必要分配新的内存。
注意:Go语言的range循环在处理字符串的时候,会自动隐式解码UTF8字符串
bytes.Buffer
bytes.Buffer
是一个实现了读写方法的可变大小的字节缓冲。
使用bytes.Buffer
进行字符串的累加比起+=要高效的多,尤其是在面对大数量的字符串时
1 | var b bytes.Buffer // A Buffer needs no initialization. |