1、+号

func main() {s1 := "hello"s2 := "word"s3 := s1 + s2fmt.Print(s3) //s3 = "helloword"
}

go语言用+拼接,php使用.拼接,不过由于golang中的字符串是不可变的类型,因此用 + 连接会产生一个新的字符串对效率有影响。

2、sprintf函数

s1 := "hello"
s2 := "word"
s3 := fmt.Sprintf("%s%s", s1, s2) //s3 = "helloword"

3、strings包里的Join函数

Join函数会先根据字符串数组的内容,计算出一个拼接之后的长度,然后申请对应大小的内存,一个一个字符串填入,在已有一个数组的情况下,这种效率会很高,如果没有的话效率也不高。还可以用来切片转字符串

s1 := "hello"
s2 := "word"
var str []string = []string{s1, s2}
s3 := strings.Join(str, "")
fmt.Print(s3)

4、bytes包里的buffer.Builderbuffer.WriteString函数

s1 := "hello"
s2 := "word"
var bt bytes.Buffer
bt.WriteString(s1)
bt.WriteString(s2)
s3 := bt.String()
fmt.Println(s3)

5、strings包里的buffer.Builder函数

s1 := "hello"
s2 := "word"
var build strings.Builder
build.WriteString(s1)
build.WriteString(s2)
s3 := build.String()
fmt.Println(s3)

官方建议使用的的拼接方式

ps:直接使用运算符

func BenchmarkAddStringWithOperator(b *testing.B) {hello := "hello"world := "world"for i := 0; i < b.N; i++ {_ = hello + "," + world}
}

golang 里面的字符串都是不可变的,每次运算都会产生一个新的字符串,所以会产生很多临时的无用的字符串,不仅没有用,还会给 gc 带来额外的负担,所以性能比较差

主要结论

  • 后三种性能高
  • 在已有字符串数组的场合,使用 strings.Join() 能有比较好的性能
  • 如果需要拼接的不仅仅是字符串,还有数字之类的其他需求的话,可以考虑 fmt.Sprintf()

Golang的五种字符串拼接方式相关推荐

  1. Java 5种字符串拼接方式性能比较。

    最近写一个东东,可能会考虑到字符串拼接,想了几种方法,但对性能未知,于是用Junit写了个单元测试. 代码如下: import java.util.ArrayList; import java.uti ...

  2. 用数据说话,Go 所有字符串拼接方式里哪种才是最稳定高效的?

    前言 日常业务开发中离不开字符串的拼接操作,不同语言的字符串实现方式都不同,在Go语言中就提供了6种方式进行字符串拼接,那这几种拼接方式该如何选择呢?使用那个更高效呢?今天我们邀请到公众号「Golan ...

  3. 选择合适的 Go 字符串拼接方式

    前言 哈喽,大家好,我是asong 日常业务开发中离不开字符串的拼接操作,不同语言的字符串实现方式都不同,在Go语言中就提供了6种方式进行字符串拼接,那这几种拼接方式该如何选择呢?使用那个更高效呢?本 ...

  4. Go字符串拼接方式深入比较

    前言 Go中字符串的拼接主要有"+".fmt.Sprintf+%s.strings.Join等方式,已经有很多人从耗时的角度比较这些方式的性能,本文则从源码的角度去分析下这些方式的 ...

  5. Go语言6种字符串拼接的方式

    Go语言6种字符串拼接的方式 前言 string类型 字符串拼接的6种方式及原理 原生拼接方式"+" 字符串格式化函数fmt.Sprintf Strings.builder byt ...

  6. C# 字符串拼接整理_C#字符串拼接方式整理

    C# 字符串拼接整理_C#字符串拼接方式整理 一.字符串连接使用+  注意:此方式多种语言通用,js,java中都可以如此操作 string hello = "Hello"; st ...

  7. 将页面多个下拉框的值以字符串拼接方式存放至数据库一个字段中

     1,当页面中有多个值,传入Controller并以字符串拼接方式,以","隔开存放至数据库一个字段中,页面中多个<select name="off"&g ...

  8. 集丰照明|LED五种调光方式详解(DALI/DMX/0-10V/PWM/可控硅)

    LED五种调光方式详解 LED的发光原理同传统照明不同,同功率的 LED 光源,因其采用的芯片不同,电流电压参数则不同,故其内部布线结构和电路分布也不同,导致了各生产厂商的光源对调光驱动的要求也不尽相 ...

  9. golang字符串拼接方式

    字符串拼接是字符的常见操作.在golang中,遇见了字符串拼接.作为一个长期的C程序员,我第一反应是:字符串拼接函数strcat,但发现golang并无字符串拼接函数. 我想起了最简单的方法,通过+操 ...

最新文章

  1. c3p0数据库连接池使用报错【 You can't operate on a closed Connection!!!】解决方案
  2. MAPREDUCE的实战案例
  3. 爬取某东600多本书籍,用数据帮你分析哪些Python书籍值得选择(上)
  4. 主流or消亡?2016年大数据发展将何去何从
  5. Kerberos认证代码分析Can't get Kerberos realm
  6. [转]retina屏下支持0.5px边框的情况
  7. 2020-08-30
  8. EF的注解Annotation和Fluent API
  9. STLink连接与资源下载
  10. mysql按照汉字拼音排序
  11. Android 车载应用开发与分析(12) - SystemUI (一)
  12. centos查询 硬盘序列号查询_centos 查看硬盘SMART健康信息
  13. 英语面试(自我介绍,电话面试..)
  14. mysql nfs存储_NFS存储服务及部署
  15. 词向量与词向量拼接_如何拥抱 embedding ?从词向量到句向量的技术详解-阿里云开发者社区...
  16. 测试工程师的项目经验怎么写?
  17. 【YOLO】目标检测第三步——用Pascal voc 2012 数据集训练YOLO网络
  18. DNA测序也有批次效应?
  19. P2550 [AHOI2001]彩票摇奖(C语言)
  20. Delete Top n-1 from a groud of records of a table

热门文章

  1. 技术赋能数字经济释放巨大潜力
  2. Python 自动化测试怎么做?
  3. APICloud的特性
  4. 日本国家旅游局的新版《日本本土风情导览》主打人迹罕至的名胜、劲酷的景点以及鲜为人知的攻略
  5. How add nic driver to initrd
  6. TensorFlow入门之二:tensorflow手写数字识别
  7. PC上网页端屏蔽知乎上的视频
  8. 【Linux操作系统】——安装CentOS系统
  9. 微信开发(一)--分享接口
  10. IS_ERR()宏是什么意思