¿Cómo puedo imprimir un número o hacer una cadena con relleno de ceros para que tenga un ancho fijo?
Por ejemplo, si tengo el número 12y quiero hacerlo 000012.
El paquete fmt puede hacer esto por usted:
fmt.Printf("|%06d|%6d|\n", 12, 345)
Observe el 0 en% 06d, que lo convertirá en un ancho de 6 y lo rellenará con ceros. El segundo se rellenará con espacios.
Puedes verlo en acción aquí: http://play.golang.org/p/cinDspMccp
-solo da espacios, necesito ceros.Sprintflugar dePrintfUtilice la
Printffunción del paquete fmt con unwidthde6y el carácter de relleno0:Configurando las
widthobras poniendo un número entero directamente antes del especificador de formato ('verbo'):Los únicos caracteres de relleno admitidos por Golang (y la mayoría de los otros idiomas) son espacios y
0:Es posible justificar a la derecha la impresión anteponiendo un signo menos
-:Tenga en cuenta que para los números de punto flotante, el ancho incluye toda la cadena de formato:
Es útil tener en cuenta que el ancho también se puede establecer mediante programación usando en
*lugar de un número y pasando el ancho comointparámetro:Esto podría ser útil, por ejemplo, si el valor más grande que desea imprimir solo se conoce en tiempo de ejecución (llamado
maxValen el siguiente ejemplo):Por último, si no desea imprimir
stdoutpero devolver una cadena, utiliceSprintftambién del paquete fmt con los mismos parámetros:fuente
Hay una forma más sencilla de lograrlo. Utilizar
fmt.Sprintfformatea y devuelve una cadena sin imprimirla en ninguna parte. Aquí%02ddice pad cero a la izquierda para el valor que tiene <2 dígitos. Si el valor dado tiene 2 o más dígitos, no se rellenará. Por ejemplo:Puede usar
%03do más para un relleno de más ceros.fuente
La pregunta " Lista de formato de impresión en Go lang " nos recuerda que también existe la bandera:
Puede ver más ejemplos de relleno con
DaddyOh/golang-samples/pad.go, si desea rellenar con otras secuencias de cadenas (más complejas que '0' o ''):leftPad(s string, padStr string, pLen int)rightPad(s string, padStr string, pLen int)leftPad2Len(s string, padStr string, overallLen int)rightPad2Len(s string, padStr string, overallLen int)Ver play.golang.org:
fuente
lpad ("3", "0", 2) resultado: "03"
lpad ("12", "0", 6) resultado: "000012"
fuente