A medida que escribe el código Go, encontrará que el formato de cadena es muy útil en muchas situaciones. Es posible que esté analizando entradas o elaborando resultados más complejos que la simple concatenación. Es posible que esté trabajando con tipos que no sean cadenas simples.

El formato de cadena en Go usa el proceso familiar y la sintaxis de la función printf, que también usan lenguajes desde Java hasta Haskell.

Go proporciona varios métodos para formatear cadenas en el fmt paquete. Puede usar funciones y verbos para formatear cadenas según la operación o las entradas que desee formatear.

Formateo de cadenas en Go

Las funciones en el paquete fmt son similares a sus contrapartes, como la funcion printf en bash o c Go deriva sus verbos de formato de C.

Tu usas verbos de formato de cadena como marcadores de posición para los valores de las variables en una cadena contenedora. Luego puede pasar esa cadena de formato a una función como Imprimir, junto con los valores correspondientes a esos marcadores de posición.

instagram viewer

No puede usar verbos de formato de cadena con el Impresión y Imprimir métodos. Puedes usarlos con métodos como Imprimir y Sprintf.

fmt. Println("Esta es una prueba %v", 90)
fmt. Printf("Esta es una prueba %v", 90)

los %v verbo imprime cualquier valor en su formato predeterminado. los Imprimir El método no reconoce los verbos e imprime los argumentos que recibe. los Imprimir y Sprintf ambas funciones dan formato al primer argumento de cadena que les pasa.

Funciones de formato de cadena en el paquete fmt

Formateo de cadenas en el lenguaje de programación Go requiere que use una función de formato de cadena y un verbo. La función devuelve la cadena formateada y los verbos son los marcadores de posición para las entradas de la cadena.

los Imprimir El método da formato a la entrada de acuerdo con el especificador de formato y devuelve el número de bytes o errores escritos.

fmt. Printf("Esta es una prueba %v", 90)

Convencionalmente, no tendrá que preocuparse por los errores cuando utilice el Imprimir método.

los Sprintf El método formatea según el formato especificado y devuelve el resultado como una cadena.

variable resultado = fmt. Sprintf("Esto es una prueba %v", 90)

los Fprintf El método formatea la cadena y la escribe en un escritor (métodos que implementan el yo. Escritor interfaz)

// escribir datos en la salida estándar
resultado, err = fmt. Fprintf (escritor, "Esto es una prueba %v", 90)

los fscanf el método escanea desde un lector y formatea de acuerdo con el formato especificado.

variable tomar cuerda

// lee datos de la cadena dada
leerCadena := cadenas. NewReader("Esto es una prueba")

leer, errar := fmt. Fscanf (lector, "%v", &tomar)

En este caso, el fscanf decodifica la cadena del lector en el tomar variable y la leer variable contiene el resultado del formato.

Los verbos de formato de cadena

Go proporciona muchos verbos de formato que puede usar junto con las funciones de formato de cadena.

Hay verbos generales de formato de cadena como el %v verbo en los ejemplos de funciones de formato de cadena. Puede utilizar los verbos generales de formato de cadena para formatear cualquier tipo de datos.

Puedes usar el %#v verbo para generar cualquier valor, el %+v para estructuras, el %T verbo para el tipo de cualquier valor, y el %% verbo sin valores.

escribe ningún estructura { 
nombre cuerda
años En t
está conectado bool
}

variable instancia = cualquier {
nombre: "John Doe",
años: 34,
está conectado: verdadero,
}

variable resultado = fmt. Sprintf("Este es un estructura ejemplo de formato %+v", instancia)
fmt. Imprimir (resultado)

los resultado La variable contiene la cadena formateada de la estructura instanciada. Si lo imprimes, debería verse algo como esto:

Este es un ejemplo de formato de estructura {name: John Doe age: 34 isLoggedIn:verdadero}

Existen verbos para formatear tipos de datos nativos de Go específicos, incluidos canales y punteros.

Verbo Funcionalidad
%t booleanos.
%d int, int8, etc
%d, %#x si se imprime con %#v uint, uint8, etc.
%gramo float32, complex64, etc.
%s cuerda.
%pags canal
%PAGS puntero.

Querrá asegurarse de no cometer errores con los verbos, ya que distinguen entre mayúsculas y minúsculas, como el chan y puntero verbos.

Dar formato a enteros y flotantes

Hay verbos de formato de cadena para dar formato a enteros en diferentes bases. Puede usar cualquiera de estos verbos para formatear números enteros

Verbo Funcionalidad
%b base 2
%C el carácter representado por el punto de código Unicode correspondiente.
%d base 10
%o base 8
%O base 8 con prefijo 0o.
% q un literal de carácter entre comillas simples se escapó de forma segura con la sintaxis Go.
%X base 16, con minúsculas para a-f.
%X base 16, con letras mayúsculas para A-F.
%U Formato Unicode: U+1234; igual que "U+%04X".

Por ejemplo, puede formatear un número entero usando el %d verbo:

variable resultado = fmt. Sprintf("Este es un ejemplo de formato de entero %d", 90)
fmt. Imprimir (resultado)

Estos son los verbos para formatear números de punto flotante.

Verbo Funcionalidad
%b notación científica sin decimales con exponente una potencia de dos, a la manera de strconv. FormatFloat con el formato 'b', p. -123456p-78
%mi notación científica, p. -1.234456e+78
%MI punto decimal pero sin exponente, p. ej., 123,456
%F punto decimal pero sin exponente, p. ej., 123,456
%F sinónimo de %f.
%gramo %e para exponentes grandes, %f en caso contrario. Precisión a continuación.
%GRAMO %E para exponentes grandes, %F en caso contrario
%X notación hexadecimal (con potencia decimal de dos exponentes), por ejemplo, -0x1.23abcp+20.
%X notación hexadecimal en mayúsculas, p. -0X1.23ABCP+20.

Aquí hay un ejemplo de cómo formatear un punto decimal sin exponente con el %F verbo.

variable resultado = fmt. Sprintf("Este es un ejemplo de formato de punto flotante %f", 432.9503)
fmt. Imprimir (resultado)

Siempre puede usar los verbos generales si no está seguro del tipo.

Formateo de cadenas y bytes

Los tipos de cadenas y segmentos de bytes son bastante similares en Go. Estas son las banderas para formatear cadenas y bytes.

Verbo Funcionalidad
%s los bytes no interpretados de la cadena o segmento
% q una cadena entre comillas dobles se escapó de forma segura con la sintaxis Go
%X base 16, minúsculas, dos caracteres por byte
%X base 16, mayúsculas, dos caracteres por byte

Aquí hay un ejemplo de cómo formatear una cadena con el %s verbo.

variable puntuación = "ejemplo"
variable resultado = fmt. Sprintf("Este es un cuerda ejemplo de formato %s", puntuación)
fmt. Imprimir (resultado)

El paquete fmt es esencial para la programación de Python

los fmt El paquete contiene la mayor parte de la funcionalidad que necesitará para el formato de cadena. Go también proporciona una instrumentos de cuerda paquete para la manipulación de cadenas y un Iniciar sesión paquete que puede formatear cadenas para iniciar sesión.

los fmt paquete tiene funciones que implementan el yo. Escritor y yo. Lector interfaces Lo encontrará útil para muchos casos de uso, como la creación de aplicaciones web y de línea de comandos.