Caracteres en una cadena
En la sección anterior sobre estructuras de datos básicas, aprendimos que una cadena (string) es una colección de caracteres. Por lo tanto, podemos usar el índice para obtener caracteres específicos de una cadena. Vamos a crear un archivo string.go y escribir el siguiente código:
cd ~/project
touch string.go
package main
import "fmt"
func main() {
s := "labex"
// Access each character in the string using indices
fmt.Println(s[0], s[1], s[2], s[3], s[4])
// Print characters
fmt.Printf("%c %c %c %c %c\n", s[0], s[1], s[2], s[3], s[4])
}
Ejecuta el programa:
go run string.go
La salida es la siguiente:
108 97 98 101 120
l a b e x
En este programa, declaramos una variable de cadena para almacenar "labex" y usamos el índice para acceder a cada carácter. Al imprimir, observamos que el programa devuelve números en lugar de los caracteres literales.
Si comparamos estos valores con la siguiente tabla ASCII, veremos que los números corresponden a los caracteres reales. Por ejemplo, en la tabla ASCII, el "108" corresponde a la letra "l".
Esto sucede porque los caracteres almacenan en realidad la codificación numérica de cada símbolo bajo el estándar "UTF-8". Dado que "UTF-8" es compatible con "ASCII", la posición del carácter "l" guarda el valor numérico "108".
Si queremos mostrar los caracteres como tal, podemos usar la función fmt.Printf con la secuencia de escape %c. Esto se demuestra en la segunda línea del código, la cual convierte la codificación numérica en caracteres antes de imprimirlos.
Para acceder a cada carácter de la cadena en el archivo string.go, necesitamos declarar un índice manualmente cada vez. Esto resultaría muy tedioso si tuviéramos que manejar cientos o miles de datos. En estos casos, podemos emplear un bucle for para automatizar la operación.