持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情
下面罗列一下常见的字符串拼接方式
1、+号拼接
使用+号拼接,和其他语言一样。但是go的字符串是不可变的,会产生临时字符串
s1 := "12"
s2 := "3"
s := s1 + s2
2、fmt.Sprintf()
虽然不会产生临时字符串,但是效率也不高
s1 := "12"
s2 := "3"
s := fmt.Sprintf("%s%s", s1, s2)
3、buffer.WriteString方法
性能大大优于上面两个方法
var s bytes.Buffer
s1 := "12"
s2 := "3"
s.WriteString(s1)
s.WriteString(s2)
fmt.Println(s.String())
4、builder.WriteString方法
builder方法和buffer使用一样, 但是builder设计出来是对buffer的优化,官方建议使用builder方法,效率是最高的
var s strings.Builder
s1 := "12"
s2 := "3"
s.WriteString(s1)
s.WriteString(s2)
fmt.Println(s.String())
5、strings.join()方法,切片的拼接方法
效率也是最高的,这个底层使用了builder方法
s := []string{"1", "b", "c"}
st := strings.Join(s, "@")
fmt.Println(st)
6、总结
效率:
- 单个拼接: builder > buffer > fmt.Sprintf > +
- 切片拼接: join