2015-06-20 55 views

回答

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/

+0

三江源!它的工作原理,但无论如何,我可以将它分配给一个变量。因此,如果我需要将某些字符串连接在一起,则不必创建数千个变量。 – AlexB

+0

我得到这个错误:单值上下文中的多值fmt.Printf()如果我不这样做:x,_ = fmt.Sprintf(“%02d”,1) – AlexB

+0

我更新了答案,以包含示例直接打印和分配给变量的代码。 – Grokify

0

你应该看看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 
+0

一个错误告诉我,我需要将值分配给一个变量:单值上下文中的多值fmt.Printf() – AlexB

+0

如何调用Printf? –

+0

fmt.Printf(“%02d”,rand.Intn(12)) – AlexB