为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
MMMHUHU 2021-08-16 15:37:39
如何打印一个数字或制作一个带有零填充的字符串以使其宽度固定?例如,如果我有号码12并且我想制作它000012。
查看完整描述

3 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

使用带有of和填充字符Printf的fmt 包中的函数:width60


import "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 := 6

fmt.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


查看完整回答
反对 回复 2021-08-16
  • 3 回答
  • 0 关注
  • 310 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信