¿Qué son los bytes en Go?
Los strings funcionan como slices de bytes. Los caracteres occidentales (ejemplo a,b,c,d,etc) generalmente representan un byte.
Ejemplo del uso de strings como slices
package main
import "fmt"
func main() {
hola := "hola"
fmt.Println(len(hola))
fmt.Println(hola[0])
fmt.Printf("%q\n", hola[0])
fmt.Printf("%b\n", hola[0])
nihao := "你好"
fmt.Println(len(nihao))
}
4
104
'h'
1101000
6
Descripción del ejemplo del uso de strings como slices
En el ejemplo anterior tenemos podemos ver que:
- Para obtener la longitud de un string usamos
len(string)
, este caso es4
. - Si intentamos acceder al indice 0 del string
hola[0]
, obtendremos el numero correspondiente a la tabla de codificación UTF-8, en este caso104
. - Para obtener el primer elemento del string, tenemos que imprimir su valor como caractér
fmt.Printf("%q\n", hola[0])
- El valor binario del primer caractér lo obtenemos con
fmt.Printf("%b\n", hola[0])
- No todos los caracteres miden un byte, por ejemplo
hola
que se escribe en chino你好
y se pronuncianihao
, requiere de 13 bytes, aunque solo utiliza dos caracteres.