Cómo formatear cadenas en Go

Cómo formatear cadenas en Go

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.



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("This is a test %v", 90) 
fmt.Printf("This is a test %v", 90)

los %en 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.





  resultado de formatear enteros

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("This is a test %v", 90) 

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

malvavisco mover aplicaciones a la tarjeta sd

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

var result = fmt.Sprintf("This is a test %v", 90) 

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

// write data to standard output 
result, err = fmt.Fprintf(writer, "This is a test %v", 90)

los fscanf el método escanea desde un lector y formatea según el formato especificado.

var take string 

// read data from the given string
readString := strings.NewReader("This is a test")

read, err := fmt.Fscanf(reader, "%v", &take)

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 %en 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 %#en verbo para generar cualquier valor, el %+v para estructuras, el %T verbo para el tipo de cualquier valor, y el %% verbo sin valores.

type any struct {  
name string
age int
isLoggedIn bool
}

var instance = any {
name: "John Doe",
age: 34,
isLoggedIn: true,
}

var result = fmt.Sprintf("This is a struct formatting example %+v", instance)
fmt.Println(result)

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

encontrar mi cuenta de facebook por mi nombre
This is a struct formatting example {name:John Doe age:34 isLoggedIn:true}

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

%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

%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.
%EN Formato Unicode: U+1234; igual que 'U+%04X'.

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

var result = fmt.Sprintf("This is an integer formatting example %d", 90) 
fmt.Println(result)

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

%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
%y notación científica, p. -1.234456e+78
%Y 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.

var result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503) 
fmt.Println(result)

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.

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

var score = "example" 
var result = fmt.Sprintf("This is a string formatting example %s", score)
fmt.Println(result)

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 ofrece 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 io.escritor y Lector io. interfaces Lo encontrará útil para muchos casos de uso, como la creación de aplicaciones web y de línea de comandos.