go语言位数不够在左侧填充0

臭大佬 2023-03-21 11:50:57 2425
Go 
简介 go语言位数不够在左侧填充0

问题

有时候为了保持位数对齐,我们需要在字符串中填充0或者其他的某个变量,来达到位数对齐的要求,比如,我们拿到的时分秒为1 : 5 : 30,我们想要的格式是01 : 05 : 30,这时候就需要填充了。

在Go语言中,可以使用字符串格式化的方式,在左侧填充0来使位数达到要求。具体方式如下:

num := 321
width := 4
str := fmt.Sprintf("%0*d", width, num)   // str = "0321"

在上面的代码中,fmt.Sprintf()函数的第一个参数是格式化字符串,%0d表示使用0来填充,号表示使用后面的参数,即width来确定填充的长度,num是需要格式化的数字。最终的结果是一个字符串,长度为width,不足的位数用0来填充。

需要注意的是,如果数字的位数大于width,则不会进行任何填充。如果需要保留数字的原始位数,可以将width设置为数字的位数加1。

如果是我们上述时间的问题,代码如下:

hour := 8
minute := 5
second := 23

timeStr := fmt.Sprintf("%02d:%02d:%02d", hour, minute, second)
fmt.Println(timeStr)   // 输出:08:05:23

在上面的代码中,%02d表示将数字格式化为两位数,不足两位的位置用0来填充。这样,即使时分秒的值不足两位数,也可以正确地填充为两位数,最终得到的字符串的格式为00: 00: 00。