Lección 4 · 4 de 20
Textos y Printf · Go
Junte textos con + y dé formato a la salida en Go con fmt.Printf y fmt.Sprintf: los verbos %s, %d, %.2f, %v y %q, y los anchos de columna.

Los textos (string) se unen con +: product + " beans" da Coffee beans. len(label) cuenta su longitud en bytes, que coincide con los caracteres mientras no haya tildes ni símbolos especiales; en la lección 18 verá por qué.
fmt.Printf escribe un texto con verbos que se sustituyen, en orden, por los valores que siguen: %s para un texto, %d para un entero y %.2f para un número con dos decimales. A diferencia de Println, no salta de línea por sí solo: el \n va al final del formato.
%v escribe cualquier valor en su forma natural y %q pone el texto entre comillas, útil para ver si sobran espacios. Un número entre el % y la letra fija el ancho: %-8s ocupa 8 posiciones alineado a la izquierda y %6.2f, 6 posiciones alineado a la derecha, así que las filas forman columnas.
fmt.Sprintf acepta lo mismo que Printf pero, en vez de escribir, devuelve el texto, que aquí se guarda en receipt para usarlo después. Por último, para escribir el propio signo del tanto por ciento se duplica: %d%% da 21%.
Código · main.go
package mainimport "fmt"func main() { product := "Coffee" price := 3.5 units := 4 // + joins strings; len counts their bytes. label := product + " beans" fmt.Println(label, "has", len(label), "characters") // Printf fills each verb with a value, in order. fmt.Printf("%s costs %.2f euros\n", product, price) fmt.Printf("%d units: %.2f euros\n", units, price*float64(units)) // %v prints any value; %q adds quotes. fmt.Printf("%v | %v | %q\n", units, price, product) // A width lines up columns: %-8s to the left, %6.2f to the right. fmt.Printf("%-8s|%6.2f|\n", "Tea", 2.25) fmt.Printf("%-8s|%6.2f|\n", "Cocoa", 12.4) fmt.Printf("%-8s|%6d|\n", "Units", units) // Sprintf returns the text instead of printing it. receipt := fmt.Sprintf("%dx %s = %.2f", units, product, price*float64(units)) fmt.Println("Receipt:", receipt) fmt.Printf("VAT: %d%%\n", 21) // %% writes a percent sign}Salida · go run main.go
Coffee beans has 12 characters Coffee costs 3.50 euros 4 units: 14.00 euros 4 | 3.5 | "Coffee" Tea | 2.25| Cocoa | 12.40| Units | 4| Receipt: 4x Coffee = 14.00 VAT: 21%
Para recordar
+une textos;lencuenta bytes.%stexto,%dentero,%.2fdecimales,%vcualquier valor.%-8sy%6.2ffijan el ancho para alinear columnas.Printfnecesita\nal final.Sprintfdevuelve el texto en vez de escribirlo.
Ejercicio
Escriba un tique con tres productos: el nombre a la izquierda en 10 posiciones, y la cantidad y el precio a la derecha; añada una última línea con el total, construida con Sprintf.