byte y rune
byte es un alias para uint8 y ocupa un byte (8 bits). Puede utilizarse para representar todos los caracteres de la tabla ASCII. Sin embargo, debido a que byte tiene un rango limitado de valores (256 o 2^8), cuando trabajamos con caracteres compuestos como los caracteres chinos, necesitamos utilizar el tipo rune.
Crea un nuevo archivo llamado byte.go e introduce el siguiente código:
cd ~/project
touch byte.go
package main
import "fmt"
func main() {
var a byte = 76
fmt.Printf("Value of a: %c\n", a)
var b uint8 = 76
fmt.Printf("Value of b: %c\n", b)
var c byte = 'L'
fmt.Printf("Value of c: %c\n", c)
}
Tras ejecutar el programa, se obtendrá el siguiente resultado:
go run byte.go
Value of a: L
Value of b: L
Value of c: L
El marcador de posición %c se utiliza para imprimir caracteres. Se puede observar que el tipo byte y el tipo uint8 producen la misma salida cuando sus valores coinciden. Consultando la tabla ASCII, vemos que el valor del carácter 'A' es 65. Si usamos el marcador de posición de entero %d para imprimir el valor, también obtendremos 65.
Por lo tanto, es evidente que byte en Go es equivalente a uint8 dentro de los tipos enteros. Lo mismo ocurre con rune, aunque este representa un rango diferente de valores enteros.
rune es un alias para int32 y ocupa cuatro bytes (32 bits). Se utiliza para representar caracteres compuestos, como los emojis.
Actualiza el archivo byte.go con el siguiente código:
package main
import "fmt"
func main() {
var a rune = '😊' // Emoji de sonrisa
fmt.Printf("Value of a: %c\n", a)
var b int32 = 9829 // Representación decimal de un carácter Unicode (Símbolo de corazón)
fmt.Printf("Value of b: %c\n", b)
var c rune = 0x1F496 // Representación hexadecimal de un carácter Unicode (Emoji de corazón brillante)
fmt.Printf("Value of c: %c\n", c)
var d rune = '\u0041' // Carácter Unicode representado por su punto de código (Letra 'A' mayúscula)
fmt.Printf("Value of d: %c\n", d)
var e rune = '\U0001F609' // Carácter Unicode representado por su punto de código (Emoji de cara guiñando un ojo)
fmt.Printf("Value of e: %c\n", e)
}
Al ejecutar el programa, se mostrará la siguiente salida:
go run byte.go
Nota: Ejecuta el programa en la Terminal del Escritorio o del WebIDE, pero evita hacerlo en la pestaña Terminal situada en la parte superior de la VM de LabEx.
Value of a: 😊
Value of b: ♥
Value of c: 💖
Value of d: A
Value of e: 😉
- La variable
a representa el emoji de sonrisa '😊'.
- La variable
b se inicializa con la representación decimal de un carácter Unicode (9829), que corresponde al símbolo de corazón '♥'.
- La variable
c se inicializa con la representación hexadecimal de un carácter Unicode (0x1F496), que corresponde al emoji de corazón brillante '💖'.
- La variable
d representa la letra mayúscula 'A' utilizando el formato Unicode \u0041.
- La variable
e representa el emoji de cara guiñando un ojo '😉' utilizando el formato \U con el punto de código 0001F609.
Nota: En Go, las comillas simples y las comillas dobles no son intercambiables. Las comillas simples se usan para representar caracteres individuales, mientras que las comillas dobles se usan para declarar cadenas de texto (strings). Por lo tanto, debes usar comillas simples al declarar tipos byte y rune, de lo contrario se producirá un error.