开发者

golang拼接字符串的5种实现方式

目录
  • 拼接字符串的方式共5种
    • 方式一:使用 “+”
    • 方式二:使用 strings.Join()
    • 方式三:使用fmt.Sprint
    • 方式四:使用bytes.Buffer
    • 方式五:使用strings.Builder
  • 总结

    拼接字符串的方式共5种

    方式一:使用 “+”

    字符串只能被访问,不能被修改。

    所以在拼接字符串时,需要内存拷贝,会带来性能的消耗。

    但是可读性强,适合少量字符串拼接

    package main
    
    import "fmt"
    
    func main() {
    	var (
    		a          string = "一"
    		b          string = "二"
    		c          string = "三"
    		stringJoin string
    	)
    	stringJoin = a + b + c
    	fmt.Println("使用‘+'拼接字符串的结果为:", stringJoin)
    }

    方式二:使用 strings.Join()

    适合字符串类型的切片拼接

    packagwww.devze.come main
    
    impoandroidrt (
    	"fmt"
    	"strings"
    )
    
    func main() {
    	str := []string{"a", "b", "c"}
    	var strJoin string = strings.Join(str, ",")
    	fmt.Println("使用strings.Join拼接字符串的结果为:", strJoin)
    }

    方式三:使用fmt.Sprint

    可以拼接其他类型,但会涉及类型的转换,底层实现是[] byte字节切面

    package main
    
    import "编程fmt"
    
    func main() {
    	var (
    		name string = "张三"
    		age  int32  = 18
    		str  string
    	)
    	str = fmt.Sprintf("姓名:%s,年龄:%d", name, age)
    	str1 := fmt.Sprint(name, age)
    	str2 := fmt.Sprintln(name, age)
    	fmt.Println(str)
    	fmt.Println(str1)
    	fmt.Println(str2)
    	// 结果:
    	// 姓名:张三,年龄:18
    	// 张三18
    	// 张三 18
    	//
    }

    方式四:使用bytes.Buffer

    支持字符串,字符,unicode,但会涉及字符串和[] byte之间的转换,底层[] byte,性能一般,因为WtiteString方法使用的buffer太长,会导致panic,少量拼接可以使用

    package main
    
    import (
    	"bytes"
    	"fmt"
    )
    
    func main() {
    	var (
    		info bytes.Buffe编程客栈r
    		str  string
    	)
    	info.WriteString("my")
    	info.WriteString("name")
    	info.WriteString("is")
    	info.WriteString("Tom")
    	str = info.String()
    	fmt.Println("使用bytes.Buffer拼接结果为:", str)
    	//结果:
    	//使用bytes.Buffer拼接结果为: mynameisTom
    }

    方式五:使用strings.Builder

    支持字符串,字符,unicode,使用unsafe。

    Pointer优化了字符串和[] byte之间的转换,在字符串大量拼接的场景下建议使用

    var (
    		info strings.Builder
    		str  string
    	)
    	info.WriteString("my")
    	info.WriteString("name")
    	info.WriteString("is")
    	info.编程WriteString("Tom")
    	str = info.String()
    	fmt.Println("使用strings.Buffer拼接结果为:", str)
    	//使用strings.Buffer拼接结果为: mynameisTom

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜