fmt.Tutorial de formateo de Printf y hoja de trucos

su base.org / golang
Azulejos de letras que forman el formato de palabra
  • Conceptos básicos
    • Printf
    • Sprintf (formato sin impresión)
    • Encontrar errores fmt con vet
  • Hoja de trucos
    • Formatos y tipo predeterminados
    • Entero (sangría, base, signo)
    • Carácter (citado, Unicode)
    • Booleano (verdadero/falso)
    • Puntero (hexadecimal)
    • Flotador (sangría, precisión, notación científica)
    • Cadena o segmento de bytes (comillas, sangría, hexadecimal)
    • Valores especiales

Lo básico

Con el paquete Go fmt puedes formatear números y cuerdas acolchados con espacios o ceros, en diferentes bases y con comillas opcionales.

Envía una cadena de plantilla que contiene el texto que desea formatearplus algunos verbos de anotación que indican a la función fmt mostrar que formatee los argumentos finales.

Printf

En este ejemplo, fmt.Printf formatos y escribe en la salida estándar:

fmt.Printf("Binary: %b\%b", 4, 5) // Prints `Binary: 1001`
  • la cadena de plantilla es "Binary: %b\%b",
  • el verbo de anotación %b formatea un número en binario, y
  • el valor especial \ es una barra invertida.

Como caso especial, el verbo %%, que no consume argumento, produce un signo de porcentaje:

fmt.Printf("%d %%", 50) // Prints `50 %`

Sprintf (formato sin impresión)

Use fmt.Sprintf para formatear una cadena sin imprimirla:

s := fmt.Sprintf("Binary: %b\%b", 4, 5) // s == `Binary: 1001`

Buscar errores fmt con vet

Si intenta compilar y ejecutar esta línea de código incorrecta

fmt.Printf("Binary: %b\%b", 4) // An argument to Printf is missing.

encontrará que el programa compilará y luego imprimirá

Binary: 100\%!b(MISSING)

Para detectar este tipo de errores de forma temprana, puede usar el comando vet: puede encontrar llamadas cuyos argumentos no se alinean con la cadena de formato.

$ go vet example.goexample.go:8: missing argument for Printf("%b"): format reads arg 2, have only 1 args

Hoja de trucos

Formatos y tipo predeterminados

  • Valor: int64{0, 1}
Formato Verbo Descripción
%v formato Predeterminado
int64{0, 1} %#v Ir-formato de la sintaxis
int64 %T El tipo de valor

Entero (sangría, la base, el signo)

  • Valor: 15
Formato Verbo Descripción
15 %d Base 10
+15 %+d Mostrar siempre el signo
␣␣15 %4d Almohadilla con espacios (ancho 4, justificado a la derecha)
15␣␣ %-4d Almohadilla con espacios (ancho 4, justificado a la izquierda)
0015 %04d Almohadilla con ceros (ancho 4)
1111 %b Base 2
17 %o Base 8
f %x Base 16, en minúsculas
F %X Base 16, en mayúsculas
0xf %#x Base 16, con los principales 0x

Carácter (citado, Unicode)

  • Valor: 65 (letra Unicode A)
Formato Verbo Descripción
A %c Carácter
‘A’ %q Carácter citado
U+0041 %U Unicode
U + 0041 «A’ %#U Unicode con carácter

Booleano (verdadero/falso)

Use %t para formatear un booleano como true o false.

Puntero (hexadecimal)

Utilice %p para dar formato a un puntero en notación base 16 con un encabezado 0x.

Flotador (sangría, precisión, notación científica)

  • Valor: 123.456
Formato Verbo Descripción
1.234560 e+02 %e Notación científica
123.456000 %f Punto decimal, sin exponente
123.46 %.2f Predeterminado de ancho, precisión en 2
␣␣123.46 %8.2f Ancho 8, precisión 2
123.456 %g Exponente como necesarios, necesarios sólo dígitos

Cadena o byte de la rebanada (cita, sangría, hex)

  • Valor: "café"
Formato Verbo Descripción
café %s cadena sin formato
␣␣café %6s la Anchura 6, justificar a la derecha
café␣␣ %-6s la Anchura 6, justificar a la izquierda
«café» %q cadena entre comillas
636166c3a9 %x volcado Hexadecimal de los valores de byte
63 61 66 c3 a9 % x Hex volcado con espacios

valores Especiales

Valor Descripción
\a U+0007 de alerta o de campana
\b U+0008 retroceso
\ U+005c barra diagonal inversa
\t U+0009 tabulador horizontal
\n U+000A avance de línea o línea nueva
\f U+000C forma de alimentación
\r U+000D transporte retorno
\v Pestaña vertical U + 000b

Los valores arbitrarios se pueden codificar con escapes de barra invertida y se pueden usar en cualquier literal de cadena "".

Hay cuatro formatos diferentes:

  • \x seguido por dos dígitos hexadecimales,
  • \ seguido exactamente de tres dígitos octales,
  • \u seguido exactamente de cuatro dígitos hexadecimales,
  • \U seguido exactamente ocho dígitos hexadecimales.

Los escapes \u y \U representan puntos de código Unicode.

fmt.Println("\caf\u00e9") // Prints \café

Más información

40+ consejos prácticos para cuerdas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.