字符串拼接方式

153 阅读1分钟

字符串拼接对比

方式 性能 建议 理由
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)
}