Go 语言字符串拼接

1. 使用 + 运算符(最简单的方式)

str1 := "Hello"
str2 := "World"
result := str1 + ", " + str2 + "!"
fmt.Println(result) // 输出: Hello, World!

特点

  • 简单直观

  • 适合少量字符串拼接

  • 每次拼接都会创建新字符串,性能较差(不适合大量拼接)

2. 使用 fmt.Sprintf(格式化拼接)

name := "Alice"
age := 25
result := fmt.Sprintf("My name is %s and I'm %d years old.", name, age)
fmt.Println(result) // 输出: My name is Alice and I'm 25 years old.

特点

  • 支持格式化输出

  • 代码可读性好

  • 性能比 + 稍好,但仍不是最高效的方式

3. 使用 strings.Join(适合拼接字符串切片)

words := []string{"Go", "is", "awesome"}
result := strings.Join(words, " ")
fmt.Println(result) // 输出: Go is awesome

特点

  • 高效拼接字符串切片

  • 可以指定分隔符

  • 需要预先准备好所有字符串

4. 使用 bytes.Buffer(高性能方式) 

var buffer bytes.Buffer
buffer.WriteString("Hello")
buffer.WriteString(", ")
buffer.WriteString("World")
buffer.WriteString("!")
result := buffer.String()
fmt.Println(result) // 输出: Hello, World!

特点

  • 高性能,适合大量字符串拼接

  • 内存分配次数少

  • 代码稍显冗长

5. 使用 strings.Builder(Go 1.10+ 推荐) 

var builder strings.Builder
builder.WriteString("Hello")
builder.WriteString(", ")
builder.WriteString("Gopher")
result := builder.String()
fmt.Println(result) // 输出: Hello, Gopher

特点

  • 性能最优(比 bytes.Buffer 更好)

  • 专门为字符串拼接优化

  • 不可重置(每次需要新建)

性能比较

从高到低排序:

  1. strings.Builder

  2. bytes.Buffer

  3. strings.Join

  4. fmt.Sprintf

  5. + 运算符

实践建议

  • 少量简单拼接:使用 + 或 fmt.Sprintf

  • 大量字符串拼接:使用 strings.Builder

  • 拼接字符串切片:使用 strings.Join

  • 需要格式化输出:使用 fmt.Sprintf

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值