PHP中高级工程师面试重点讲解视频课程
Go快速入门浅显易懂视频教程-基础篇
Go快速入门浅显易懂视频教程-中级篇
go的字符串的连接讲解-日常实战总结no.1
阅读:1498 分享次数:0

我这里对字符串的连接讲解主要是通过事例,通过不同的函数不同的实现方式,具体的实现方式的压测没有贴上来了,大家有兴趣自行压测一下。

package main

import (
  "fmt"
  "strings"
  "bytes"
)

func main() {
  //这一个小结我们讲字符串连接的方式,然后会大致总结一下字符串连接的效率,哪种方式好,哪种方式效率高

  //1.最常见的事字符串 + 进行连接
  a := "xxxxx"
  b := "bbbbb"
  c := a + b
  fmt.Println(c)

  //2.使用strings.Join连接
  d := []string{a, b}
  e := strings.Join(d, "")
  fmt.Println(e)

  //3.使用fmt.Sprint
  f := fmt.Sprint(a, b)
  fmt.Println(f)

  //4.使用bytes.Buffer
  g := new(bytes.Buffer)
  g.WriteString(a)
  g.WriteString(b)
  fmt.Println(g)

  //5.使用strings.Builder
  h := new(strings.Builder)
  h.WriteString(a)
  h.WriteString(b)
  fmt.Println(h)

  //6.slice固定长度.转成string,
  i := make([]byte, 20)
  i = append(i, []byte(a)...)
  i = append(i, []byte(b)...)
  fmt.Println(string(i))

  //这里是比较常用的一些常用的字符串连接方式,我其实每一种都测试过,之前线上有个转码的问题,每次字符串做对比,
  // 最后其实我采用了固定slice长度,保存byte,然后转换成string,性能最好,当然其实我也用过sync.pool,想减少gc操作,然后发现sync.pool需要比较大的字符串,且操作频繁的才有效
  //这里我没有用过使用go本身的工具去分析这个每个链接的功能了,大家有兴趣自己去实践一下,
  //+ 连接适用于短小的、常量字符串(明确的,非变量),因为编译器会给我们优化。
  //Join是比较统一的拼接,不太灵活
  //fmt和buffer基本上不推荐
  //builder从性能和灵活性上,都是上佳的选择。
  //如果能固定字符串长度,那使用slice byte是最佳选择

}



感觉本站内容不错,读后有收获?