• golang中出于性能考虑的那些实用代码片段 |字符串篇


    出于性能考虑的那些实用代码片段 |字符串篇

    在我们编程时,总是需要考虑性能方面的问题,这既能降低成本,又能提高用户的体验。好的性能的代码总是有好处的。

    字符串

    字符串替换/修改

    当我们需要修改或替换某个字符串中的字符时,为了性能的优化,可以使用[ ]byte类型,再将其以数组的形式将其替换掉。

    juejinStr:="gueJin"
    c:=[]byte(str)
    c[0]='J' 
    jueJinStrTrue:= string(c) 
    
    fmt.Print(jueJinStrTrue)//打印结果为JueJin 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    截取字符串

    当我们截取字符串时,可以将字符串类型当成数组,以数组的形式将其截取

    someStr := str[a:b]
    
    // 举例
    str:="HelloJueJin"
    someStr:=str[5:]  
    fmt.Print(someStr)   //打印结果为:JueJin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    遍历字符串

    遍历字符串我们一般使用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)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    获取字符串字节数

    我们获取字符串字节数一般使用len()方法,但是,还有一种最快速的方法:
    utf8.RuneCountInString(str)

    str:="HelloJueJin"
    fmt.Println(utf8.RuneCountInString(str),len(str)) //打印结果都为11
    
    • 1
    • 2

    字符串拼接

    在golang中字符串拼接有很多种,每种都有它的优点。

    • 1、使用"+="(使用起来最简单)
    //示例:
    str:="Jue"
    str1:="Jin"
    str+=str1
    fmt.Print(str) //打印结果为:JueJin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 2、使用"+"

    据说他是性能最好的

    str:="Jue"
    str1:="Jin"
    strSum=str+str1
    fmt.Print(strSum) //打印结果为:JueJin
    
    • 1
    • 2
    • 3
    • 4
    • 3、使用strings.Join()

    它的性能也不错噢

      str := []string{"Jue", "Jin", "!!!"}
      // 第二个参数为每个字符串相隔的符号,我们这了没有设置,所以没有符号相隔
      var strJoin string = strings.Join(str, " ")
      fmt.Print(strJoin)//打印结果为:JueJin!!!
    
    • 1
    • 2
    • 3
    • 4
    • 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!!!
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    深度学习项目实战:垃圾分类系统
    OpenCV [c++](图像处理基础示例小程序汇总)
    uniapp左滑列表删除
    STA:虚拟时钟(virtual clock)与I/O延时约束
    实战演练 | 使用纯 SQL 将表复制到新表
    算法基础 1.4 高精度 (加减乘除)
    RSA 加解密(Java 实现)
    LVS+Keepalived 高可用集群
    OpenCV笔记整理【模板匹配】
    树状数组的区间修改
  • 原文地址:https://blog.csdn.net/y943711797/article/details/126875150