如何格式化int以确保总有两位数?
例如,1将格式化为01
。
答案 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)
答案 1 :(得分:1)
您应该查看fmt.Printf
文档。它解释了所有格式化标志。您要查找的具体内容是0
和2
。 0
表示您要使用前导零将数字填充到指定的宽度。 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)
}