怎么做网站文章伪原创,健身网站开发项目总结,中国建设网站首页,网站的设计思路前言
在go语言中#xff0c;因为字符串只能被访问#xff0c;不能被修改#xff0c;所以进行字符串拼接的时候#xff0c;golang都需要进行内存拷贝#xff0c;造成一定的性能消耗。
方式1#xff1a;操作符
特点#xff1a;简单#xff0c;可读性良好。每次拼接都…前言
在go语言中因为字符串只能被访问不能被修改所以进行字符串拼接的时候golang都需要进行内存拷贝造成一定的性能消耗。
方式1操作符
特点简单可读性良好。每次拼接都会产生内存拷贝性能一般。仅适用于字符串类型的变量。
示例代码
str1 : hello
str2 : world
fmt.Println(str1 str2) // hello world
方式2strings.Join
特点只能用于拼接字符串类型的切片。
示例
slice1 : []string{a,b,c}
fmt.Println(strings.Join(slice1, )) // a b c
fmt.Println(strings.Join(slice1,)) // abc
方式3fmt.Sprint
标准库 fmt 中的 SprintSprintf 和 Sprintln 方法也是比较常用的一种字符串拼接方式它的特点是可以拼接其它类型涉及类型转换底层实现使用 []byte 字节切片但是性能一般所以该方式适用于少量包含其它非字符串类型变量进行字符串拼接的场景。
示例
str1 : hello
str2 : world
str4 : fmt.Sprint(str1,str2)
fmt.Println(str4)
str5 : fmt.Sprintf(name is %s, and age is %d \n,str2, 17)
fmt.Println(str5)
方式4bytes.Buffer类型
标准库 bytes 中的 Buffer 类型该类型中 WriteString 方法和 String 方法配合使用也可以实现字符串拼接它的特点是可以拼接字符串、字符和 Unicode底层实现使用 []byte但是涉及 string 和 []byte 之间的转换性能一般因为 WriteString 方法使用的 buffer 太长会导致 panic所以该方式适用于少量字符变量和字符串变量进行字符串拼接的场景。
示例代码
import bytes
var b bytes.Buffer
b.WriteString(My )
b.WriteString(name )
b.WriteString(is )
b.WriteString(Bob.)
str6 : b.String()
fmt.Println(str6) // My name is Bob.
方式5strings.Builder 类型
标准库 strings 中的 Builder 类型该类型中 WriteString 方法和 String 方法配合使用也可以实现字符串拼接使用方式和 bytes.Buffer 相同可以拼接字符串、字符和 Unicode也会涉及 string 和 []byte 之间的转换但是它使用 unsafe.Pointer 优化了 string 和 []byte 之间的转换所以在大量字符串拼接的场景推荐使用该种方式。
示例代码
var c strings.Builder
c.WriteString(My )
c.WriteString(name )
c.WriteString(is )
c.WriteString(Hanlei.)
str7 : c.String()
fmt.Println(str7) // My name is Hanlei.