转到-如何格式化数字位数

Ale*_*exB 3 go

我如何格式化go中的int以确保始终有两位数字?例如,将1格式化为01

Gro*_*ify 5

您可以使用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
Run Code Online (Sandbox Code Playgroud)

例如:

// 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)
Run Code Online (Sandbox Code Playgroud)

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


Hun*_*len 5

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

package main

import "fmt"

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

输出:

01
02
03
04
05
06
07
08
09
10
Run Code Online (Sandbox Code Playgroud)