Sobes.tech
Junior — Middle

¿Qué representa el resultado de la ejecución del operador [] para el tipo de dato de cadena?

sobes.tech AI

Respuesta de la IA

En Go, el operador [] para el tipo de datos de cadena se usa para obtener una rebanada de bytes de la cadena o un byte individual por índice. La cadena en Go es una secuencia inmutable de bytes (UTF-8). Al acceder a str[i], se devuelve un byte de tipo byte (alias de uint8), y no un carácter en el sentido habitual, ya que los caracteres Unicode pueden ocupar varios bytes.

Ejemplo:

s := "Привет"
fmt.Println(s[0])       // Mostrará el byte correspondiente a la primera parte del carácter 'П'
fmt.Println(string(s[0])) // Mostrará un carácter incorrecto, ya que no es un carácter UTF-8 completo

// Para obtener caracteres (runes), es necesario convertir la cadena en un slice de runas:
r := []rune(s)
fmt.Println(string(r[0])) // Mostrará 'П'

Por lo tanto, el operador [] para cadenas devuelve un byte por índice, no un carácter Unicode.