golang拼接字符串的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()
适合字符串类型的切片拼接
package main import ( "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.Buffer 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
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。