102人参与 • 2025-02-14 • Golang
字符串只能被访问,不能被修改。
所以在拼接字符串时,需要内存拷贝,会带来性能的消耗。
但是可读性强,适合少量字符串拼接
package main
import "fmt"
func main() {
var (
a string = "一"
b string = "二"
c string = "三"
stringjoin string
)
stringjoin = a + b + c
fmt.println("使用‘+'拼接字符串的结果为:", stringjoin)
}适合字符串类型的切片拼接
package main
import (
"fmt"
"strings"
)
func main() {
str := []string{"a", "b", "c"}
var strjoin string = strings.join(str, ",")
fmt.println("使用strings.join拼接字符串的结果为:", strjoin)
}可以拼接其他类型,但会涉及类型的转换,底层实现是[] 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
//
}支持字符串,字符,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
}支持字符串,字符,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以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论