Go - 如何格式化数字位数

时间:2015-06-20 16:18:04

标签: go

如何格式化int以确保总有两位数? 例如,1将格式化为01

3 个答案:

答案 0 :(得分:4)

您可以使用fmt.Printf()fmt.Sprintf()创建一个带有左填充零的字符串。 fmt.Printf()将打印数据,而fmt.Sprintf()将允许您将结果字符串分配给变量。

以下是文档的签名:

func Printf(format string, a ...interface{}) (n int, err error)

func Sprintf(format string, a ...interface{}) string

例如:

// Printing directly using fmt.Printf()
fmt.Printf("%02d\n", 1)

// With output assignment
count, err := fmt.Printf("%02d\n", 1)
if err == nil {
    fmt.Printf("Printed %v bytes\n", count)
} else {
    fmt.Println("Error printing")
}

// Assigning to variable using fmt.Sprintf()
formatted := fmt.Sprintf("%02d", 1)
fmt.Println(formatted)

文档:https://golang.org/pkg/fmt/

答案 1 :(得分:1)

您应该查看fmt.Printf文档。它解释了所有格式化标志。您要查找的具体内容是020表示您要使用前导零将数字填充到指定的宽度。 2表示您想要的宽度,这两个标记将一起填充带有前导0的单个数字,但忽略长度为2位或更长的数字。

package main

import "fmt"

func main() {
    for i := 1; i <= 10; i++ {
        fmt.Printf("%02d\n", i)
    }
}

输出:

01
02
03
04
05
06
07
08
09
10

答案 2 :(得分:0)

另一种选择:

package main

import (
   "golang.org/x/text/language"
   "golang.org/x/text/message"
   "golang.org/x/text/number"
)

var fmt = message.NewPrinter(language.English)

func main() {
   n := number.Decimal(
      1, number.Pad('0'), number.FormatWidth(2),
   )
   fmt.Println(n)
}

https://pkg.go.dev/golang.org/x/text/number