插件窝 干货文章 Go语言整数格式化输出:如何用Go语言实现千分位分隔符?

Go语言整数格式化输出:如何用Go语言实现千分位分隔符?

字符串 千分 整数 WriteString 729    来源:    2025-03-15

在Go语言中,标准库并没有直接提供将整数格式化为带有千分位分隔符的字符串的功能。不过,你可以通过自定义函数来实现这一需求。以下是一个示例代码,展示了如何将整数格式化为带有千分位分隔符的字符串:

package main

import (
    "fmt"
    "strconv"
    "strings"
)

// 将整数格式化为带有千分位分隔符的字符串
func formatWithThousandSeparator(n int) string {
    // 将整数转换为字符串
    s := strconv.Itoa(n)

    // 计算字符串的长度
    length := len(s)

    // 计算需要插入逗号的次数
    commaCount := (length - 1) / 3

    // 创建一个新的字符串构建器
    var result strings.Builder

    // 初始化索引
    start := 0

    // 如果长度不是3的倍数,先处理前面的部分
    if length%3 != 0 {
        result.WriteString(s[:length%3])
        start = length % 3
        if commaCount > 0 {
            result.WriteString(",")
        }
    }

    // 处理剩余的部分
    for i := 0; i < commaCount; i++ {
        result.WriteString(s[start:start+3])
        start += 3
        if i < commaCount-1 {
            result.WriteString(",")
        }
    }

    return result.String()
}

func main() {
    number := 1234567890
    formatted := formatWithThousandSeparator(number)
    fmt.Println(formatted) // 输出: 1,234,567,890
}

代码解释:

  1. strconv.Itoa(n): 将整数 n 转换为字符串。
  2. length := len(s): 计算字符串的长度。
  3. commaCount := (length - 1) / 3: 计算需要插入逗号的次数。
  4. strings.Builder: 使用 strings.Builder 来高效地构建字符串。
  5. result.WriteString(s[:length%3]): 如果字符串长度不是3的倍数,先处理前面的部分。
  6. result.WriteString(","): 在适当的位置插入逗号。
  7. result.WriteString(s[start:start+3]): 处理剩余的部分,每3个字符插入一个逗号。

示例输出:

1,234,567,890

这个函数可以处理任意长度的整数,并将其格式化为带有千分位分隔符的字符串。