字符串拼接可以使用+直接拼接,虽然这个很方便,但是如果连接涉及的数据量很大,这种方式代价高昂。一种简单且高效的解决方案是使用strings包的Join函数。
做一个简单的测试:
将一个拥有50000个helloworld字符串切片进行用+符号以及string.Join进行拼接。并且输出两种方法所用的时间。
package main
import (
"fmt"
//"os"
"strings"
"time"
)
func main() {
//fmt.Println(os.Args)
num := 50000
list := make([]string, 100)
for i:=0;i<num; i++ {
list = append(list, "helloworld")
}
var test1 string
var seq string
start1 := time.Now()
for i:=0; i<num; i++ {
test1 += seq + list[i]
seq = " "
}
end1 := time.Now().Sub(start1)
start2 := time.Now()
test2 := strings.Join(list, " ")
end2 := time.Now().Sub(start2)
fmt.Println(test1, test2) // 输出下两个字符串
fmt.Println(end1)
fmt.Println(end2)
}
结果:
1.8634193s
995.7µs
从代码和结果来看显然第二种方法写出来的代码更简洁更快。因此在少量拼接字符串时候用+便可,当数量大于3,或者字符串来自切片的时候,用strings.Join更好。
主要参考《Go语言圣经》
如果觉得我写的还不错请关注我公众号: