Lección 17 · 17 de 20
Los paquetes strings y strconv · Go
Trabaje con texto en Go con el paquete strings (Split, TrimSpace, Join, Contains, Replace) y convierta textos y números con strconv.

El paquete `strings` reúne las funciones para trabajar con texto. strings.Split(line, ",") corta la lista de la compra en cada coma y devuelve un slice. Los trozos llevan espacios de más, que strings.TrimSpace quita por los dos extremos; %q los muestra entre comillas para comprobarlo.
Los textos de Go no se pueden modificar: estas funciones devuelven un texto nuevo y dejan el original como estaba. Por eso parts[i] = strings.TrimSpace(parts[i]) vuelve a guardar el resultado en el slice.
strings.Join hace lo contrario que Split: une el slice con el separador que se le indique, aquí " | ". ToUpper pasa a mayúsculas, Contains dice si un texto contiene otro, Replace sustituye (el 1 indica cuántas veces; -1 serían todas), Count cuenta apariciones y Repeat repite un texto, útil para dibujar una raya.
El paquete `strconv` convierte entre textos y números. Atoi pasa a int y ParseFloat a float64, y los dos devuelven además un error: con "12" es nil, y con "twelve" explica que la sintaxis no es válida. En sentido contrario, Itoa convierte un entero en texto y FormatFloat(x, 'f', 2, 64) escribe un decimal con dos cifras.
Código · main.go
package mainimport ( "fmt" "strconv" "strings")func main() { line := " milk, eggs ,bread, olive oil " // Split cuts at each comma; TrimSpace removes the spaces around. parts := strings.Split(line, ",") for i := 0; i < len(parts); i++ { parts[i] = strings.TrimSpace(parts[i]) } fmt.Printf("%d items: %q\n", len(parts), parts) fmt.Println(strings.Join(parts, " | ")) fmt.Println("Upper:", strings.ToUpper(parts[0]), "| has eggs:", strings.Contains(line, "eggs")) fmt.Println("Replace:", strings.Replace(parts[3], "olive", "sunflower", 1), "| commas:", strings.Count(line, ",")) fmt.Println(strings.Repeat("-", 24)) // strconv turns text into numbers and numbers into text. units, err := strconv.Atoi("12") fmt.Println("12 units x 2 =", units*2, "error:", err) price, _ := strconv.ParseFloat("2.75", 64) fmt.Println("Price x 2 =", price*2) if _, err := strconv.Atoi("twelve"); err != nil { fmt.Println("Error:", err) } label := "Pack of " + strconv.Itoa(units) + ": " + strconv.FormatFloat(price*float64(units), 'f', 2, 64) fmt.Println(label)}Salida · go run main.go
4 items: ["milk" "eggs" "bread" "olive oil"] milk | eggs | bread | olive oil Upper: MILK | has eggs: true Replace: sunflower oil | commas: 3 ------------------------ 12 units x 2 = 24 error: <nil> Price x 2 = 5.5 Error: strconv.Atoi: parsing "twelve": invalid syntax Pack of 12: 33.00
Para recordar
strings.Splitcorta ystrings.Joinune.TrimSpace,ToUpperyReplacedevuelven un texto nuevo.Contains,HasPrefixyCountpreguntan por el contenido.strconv.AtoiyParseFloatconvierten texto en número, con error.strconv.ItoayFormatFloatconvierten número en texto.
Ejercicio
Parta el texto "name=Ana;age=34;city=Bilbao" con strings.Split por ; y cada trozo por =, escriba cada clave con su valor y convierta la edad con strconv.Atoi para sumarle 1.