Los strings o cadenas de texto son, internamente, arrays de caracteres, por lo que podemos extraer caracteres de la misma manera como extraemos datos de otros arrays.
Extracciones de datos de un array
Existen diversas formas de extraer datos de un array. La primera es la más sencilla: accediendo al elemento que se encuentra en el índice especificado entre corchetes.
array[n]
donde n es un número entre cero y longitud -1, y se refiere al índice del array.
Otra forma de extraer elementos de un array es mediante rangos, indicando una posición inicial y una posición final.
array[inicio:fin]
En esta especificación, la posición inicial está incluida en el rango, mientras que la posición final no está incluida, llegando hasta el elemento justamente anterior.
En un rango, si no se especifica la posición inicial, asume por defecto la primera posición (posición cero). Si no se especifica la posición final, asume por defecto la longitud del array. Si no se especifica ninguna de las dos, asume desde el inicio (posición 0) hasta el final (longitud total).
El siguiente ejemplo ilustra estos conceptos, tanto con un string como con un array de enteros.
package main import "fmt" func main() { var poblacion string = "Arroyomolinos" notas := [6]int{6, 7, 9, 8, 5, 3} fmt.Printf("poblacion: %v\n", poblacion) fmt.Printf("Longitud poblacion: %v\n", len(poblacion)) fmt.Printf("Carácter 4: %v\n", string(poblacion[4])) fmt.Printf("poblacion[:6] %v\n", poblacion[:6]) fmt.Printf("poblacion[2:6] %v\n", poblacion[2:6]) fmt.Printf("poblacion[6:] %v\n", poblacion[6:]) fmt.Printf("poblacion[:] %v\n", poblacion[:]) fmt.Println("---") fmt.Printf("notas: %v\n", notas) fmt.Printf("Longitud notas: %v\n", len(notas)) fmt.Printf("Capacidad notas: %v\n", cap(notas)) fmt.Printf("notas[4]: %v\n", notas[4]) fmt.Printf("notas[:3] %v\n", notas[:3]) fmt.Printf("notas[2:4] %v\n", notas[2:4]) fmt.Printf("notas[3:] %v\n", notas[3:]) fmt.Printf("notas[:] %v\n", notas[:]) }
Es conveniente reseñar varias cosas sobre los strings:
- Cuando se extrae un único elemento, este será un
byte
, es decir, un entero de 8 bits (valor entre 0 y 255). Estebyte
se corresponde al código ASCII del carácter extraído. Por dicho motivo, en el código forzamos a que dichobyte
se convierta y se muestre como unstring
. - Cuando se extrae un rango del
string
, dicho rango es otrostring
con el rango de caracteres extraído - Puede aplicarse la función
len()
(longitud o tamaño), pero no la funcióncap()
(capacidad).
El resultado será el siguiente:
$ go run array-string.go poblacion: Arroyomolinos Longitud poblacion: 13 Carácter 4: y poblacion[:6] Arroyo poblacion[2:6] royo poblacion[6:] molinos poblacion[:] Arroyomolinos --- notas: [6 7 9 8 5 3] Longitud notas: 6 Capacidad notas: 6 notas[4]: 5 notas[:3] [6 7 9] notas[2:4] [9 8] notas[3:] [8 5 3] notas[:] [6 7 9 8 5 3]
No hay comentarios:
Publicar un comentario