拼接字符串的方式共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总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论