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

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

字符串 逗号 整数 length 472    来源:    2025-03-13

在Go语言中,可以通过自定义函数来实现整数的千位分隔符格式化输出。以下是一个示例代码,展示了如何实现这一功能:

package main

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

// 将整数格式化为带有千位分隔符的字符串
func formatNumberWithCommas(num int64) string {
    // 将整数转换为字符串
    numStr := strconv.FormatInt(num, 10)

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

    // 如果长度小于等于3,直接返回原字符串
    if length <= 3 {
        return numStr
    }

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

    // 计算第一个逗号的位置
    start := length % 3
    if start == 0 {
        start = 3
    }

    // 添加第一个部分
    result.WriteString(numStr[:start])

    // 循环添加剩余的部分,并在每三个数字后添加逗号
    for i := start; i < length; i += 3 {
        result.WriteString(",")
        result.WriteString(numStr[i : i+3])
    }

    return result.String()
}

func main() {
    num := int64(1234567890)
    formattedNum := formatNumberWithCommas(num)
    fmt.Println(formattedNum) // 输出: 1,234,567,890
}

代码解释:

  1. strconv.FormatInt(num, 10): 将整数转换为字符串。
  2. length := len(numStr): 获取字符串的长度。
  3. if length <= 3: 如果长度小于等于3,直接返回原字符串,因为不需要添加逗号。
  4. start := length % 3: 计算第一个逗号的位置。如果长度是3的倍数,则从第3个字符开始。
  5. result.WriteString(numStr[:start]): 添加第一个部分。
  6. for i := start; i < length; i += 3: 循环添加剩余的部分,并在每三个数字后添加逗号。

示例输出:

1234567890 -> 1,234,567,890

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