出于性能考虑的那些实用代码片段 |字符串篇
在我们编程时,总是需要考虑性能方面的问题,这既能降低成本,又能提高用户的体验。好的性能的代码总是有好处的。
字符串
字符串替换/修改
当我们需要修改或替换某个字符串中的字符时,为了性能的优化,可以使用[ ]byte类型,再将其以数组的形式将其替换掉。
juejinStr:="gueJin"
c:=[]byte(str)
c[0]='J'
jueJinStrTrue:= string(c)
fmt.Print(jueJinStrTrue)//打印结果为JueJin
截取字符串
当我们截取字符串时,可以将字符串类型当成数组,以数组的形式将其截取
someStr := str[a:b]
// 举例
str:="HelloJueJin"
someStr:=str[5:]
fmt.Print(someStr) //打印结果为:JueJin
遍历字符串
遍历字符串我们一般使用for和for···range两种
// len()函数获取str的长度(字节数),使用for循环
for i:=0; i < len(str); i++ {
fmt.Println(str[i])
}
for i, s := range str {
fmt.Println(i,s)
}
获取字符串字节数
我们获取字符串字节数一般使用len()
方法,但是,还有一种最快速的方法:
utf8.RuneCountInString(str)
str:="HelloJueJin"
fmt.Println(utf8.RuneCountInString(str),len(str)) //打印结果都为11
字符串拼接
在golang中字符串拼接有很多种,每种都有它的优点。
- 1、使用"+="(使用起来最简单)
//示例:
str:="Jue"
str1:="Jin"
str+=str1
fmt.Print(str) //打印结果为:JueJin
- 2、使用"+"
据说他是性能最好的
str:="Jue"
str1:="Jin"
strSum=str+str1
fmt.Print(strSum) //打印结果为:JueJin
- 3、使用strings.Join()
它的性能也不错噢
str := []string{
"Jue", "Jin", "!!!"}
// 第二个参数为每个字符串相隔的符号,我们这了没有设置,所以没有符号相隔
var strJoin string = strings.Join(str, " ")
fmt.Print(strJoin)//打印结果为:JueJin!!!
- 4、使用bytes.Buffer
当使用字符数量非常庞大时推荐使用这个
var (
buf bytes.Buffer
str string
)
buf.WriteString("Jue")
buf.WriteString("Jin")
buf.WriteString("!")
buf.WriteString("!")
buf.WriteString("!")
str = buf.String()
fmt.Println(str)// 打印结果为:JueJin!!!