23人参与 • 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 举报,一经查实将立刻删除。
发表评论