驴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.