Golang:打印时如何用零填充数字?

如何打印一个数字或制作一个带有零填充的字符串以使其宽度固定?

例如,如果我有号码12并且我想制作它000012


MMMHUHU
浏览 311回答 3
3回答

小唯快跑啊

使用带有of和填充字符Printf的fmt 包中的函数:width60import "fmt"fmt.Printf("%06d", 12) // Prints to stdout '000012'通过在格式说明符('动词')之前直接放置一个整数来设置宽度:fmt.Printf("%d", 12)   // Uses default width,                          prints '12'fmt.Printf("%6d", 12)  // Uses a width of 6 and left pads with spaces, prints '    12'Golang(和大多数其他语言)支持的唯一填充字符是空格和0:fmt.Printf("%6d", 12)   // Default padding is spaces, prints '    12'fmt.Printf("%06d", 12)  // Change to 0 padding,       prints '000012'可以通过在前面加上减号来右对齐打印-:fmt.Printf("%-6d", 12)   // Padding right-justified, prints '12    '请注意,对于浮点数,宽度包括整个格式字符串:fmt.Printf("%06.1f", 12.0) // Prints '0012.0' (width is 6, precision is 1 digit)需要注意的是,宽度也可以通过使用*而不是数字并将宽度作为int参数传递来以编程方式设置:myWidth := 6fmt.Printf("%0*d", myWidth, 12) // Prints '000012' as before例如,如果您要打印的最大值仅在运行时已知(maxVal在以下示例中调用),这可能很有用:myWidth := 1 + int(math.Log10(float64(maxVal)))fmt.Printf("%*d", myWidth, nextVal)最后,如果您不想打印到stdout但返回字符串,Sprintf也可以使用具有相同参数的fmt 包:s := fmt.Sprintf("%06d", 12) // returns '000012' as a String
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go