2015-06-20 92 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