字符串拼接对比
| 方式 |
性能 |
建议 |
理由 |
| Println 加号拼接 |
性能一般 |
不推荐 |
代码难以维护,不便于阅读,可用于简易拼接场景 |
| Printf 或 Sprintf 格式化 |
性能差 |
推荐 |
十分常用,满足大部分日常需求的处理场景 |
| Builder 方式 |
性能好 |
推荐 |
不常用,仅对性能要求高的场景下使用 |
代码示例
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
name := "鸣人"
age := 18
birthplace := "木叶村"
var married bool
fmt.Println("忍者: " + name + "\n年龄: " + strconv.Itoa(age) + "\n出生地: " + birthplace + "\n是否已婚: " + strconv.FormatBool(married))
fmt.Printf("忍者: %s\n年龄: %d\n出生地: %s\n是否已婚: %v\n", name, age, birthplace, married)
msg := fmt.Sprintf("忍者: %s\n年龄: %d\n出生地: %s\n是否已婚: %v\n", name, age, birthplace, married)
fmt.Println(msg)
var builder strings.Builder
builder.WriteString("忍者: ")
builder.WriteString(name)
builder.WriteString("\n年龄: ")
builder.WriteString(strconv.Itoa(age))
builder.WriteString("\n出生地: ")
builder.WriteString(birthplace)
builder.WriteString("\n是否已婚: ")
builder.WriteString(strconv.FormatBool(married))
re := builder.String()
fmt.Println(re)
}