Golang的五种字符串拼接方式
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的五种字符串拼接方式相关推荐
- Java 5种字符串拼接方式性能比较。
最近写一个东东,可能会考虑到字符串拼接,想了几种方法,但对性能未知,于是用Junit写了个单元测试. 代码如下: import java.util.ArrayList; import java.uti ...
- 用数据说话,Go 所有字符串拼接方式里哪种才是最稳定高效的?
前言 日常业务开发中离不开字符串的拼接操作,不同语言的字符串实现方式都不同,在Go语言中就提供了6种方式进行字符串拼接,那这几种拼接方式该如何选择呢?使用那个更高效呢?今天我们邀请到公众号「Golan ...
- 选择合适的 Go 字符串拼接方式
前言 哈喽,大家好,我是asong 日常业务开发中离不开字符串的拼接操作,不同语言的字符串实现方式都不同,在Go语言中就提供了6种方式进行字符串拼接,那这几种拼接方式该如何选择呢?使用那个更高效呢?本 ...
- Go字符串拼接方式深入比较
前言 Go中字符串的拼接主要有"+".fmt.Sprintf+%s.strings.Join等方式,已经有很多人从耗时的角度比较这些方式的性能,本文则从源码的角度去分析下这些方式的 ...
- Go语言6种字符串拼接的方式
Go语言6种字符串拼接的方式 前言 string类型 字符串拼接的6种方式及原理 原生拼接方式"+" 字符串格式化函数fmt.Sprintf Strings.builder byt ...
- C# 字符串拼接整理_C#字符串拼接方式整理
C# 字符串拼接整理_C#字符串拼接方式整理 一.字符串连接使用+ 注意:此方式多种语言通用,js,java中都可以如此操作 string hello = "Hello"; st ...
- 将页面多个下拉框的值以字符串拼接方式存放至数据库一个字段中
1,当页面中有多个值,传入Controller并以字符串拼接方式,以","隔开存放至数据库一个字段中,页面中多个<select name="off"&g ...
- 集丰照明|LED五种调光方式详解(DALI/DMX/0-10V/PWM/可控硅)
LED五种调光方式详解 LED的发光原理同传统照明不同,同功率的 LED 光源,因其采用的芯片不同,电流电压参数则不同,故其内部布线结构和电路分布也不同,导致了各生产厂商的光源对调光驱动的要求也不尽相 ...
- golang字符串拼接方式
字符串拼接是字符的常见操作.在golang中,遇见了字符串拼接.作为一个长期的C程序员,我第一反应是:字符串拼接函数strcat,但发现golang并无字符串拼接函数. 我想起了最简单的方法,通过+操 ...
最新文章
- c3p0数据库连接池使用报错【 You can't operate on a closed Connection!!!】解决方案
- MAPREDUCE的实战案例
- 爬取某东600多本书籍,用数据帮你分析哪些Python书籍值得选择(上)
- 主流or消亡?2016年大数据发展将何去何从
- Kerberos认证代码分析Can't get Kerberos realm
- [转]retina屏下支持0.5px边框的情况
- 2020-08-30
- EF的注解Annotation和Fluent API
- STLink连接与资源下载
- mysql按照汉字拼音排序
- Android 车载应用开发与分析(12) - SystemUI (一)
- centos查询 硬盘序列号查询_centos 查看硬盘SMART健康信息
- 英语面试(自我介绍,电话面试..)
- mysql nfs存储_NFS存储服务及部署
- 词向量与词向量拼接_如何拥抱 embedding ?从词向量到句向量的技术详解-阿里云开发者社区...
- 测试工程师的项目经验怎么写?
- 【YOLO】目标检测第三步——用Pascal voc 2012 数据集训练YOLO网络
- DNA测序也有批次效应?
- P2550 [AHOI2001]彩票摇奖(C语言)
- Delete Top n-1 from a groud of records of a table