Sobes.tech
Senior

¿Qué es una cadena en Go? ¿Cuál es su estructura y características?

sobes.tech AI

Respuesta de la IA

En Go, una cadena (string) es una secuencia inmutable de bytes, generalmente representando texto en codificación UTF-8. Estructuralmente, una cadena se implementa como una estructura con dos campos: un puntero a un array de bytes y una longitud.

Características de las cadenas en Go:

  • Inmutabilidad: después de crearla, no se puede modificar. Cualquier operación que cambie su contenido crea una nueva cadena.
  • UTF-8: las cadenas almacenan bytes en UTF-8, lo que permite trabajar con caracteres Unicode.
  • Acceso por bytes: indexar una cadena devuelve un byte, no un carácter (rune). Para trabajar con caracteres, se debe usar el paquete unicode/utf8 o convertir la cadena en un slice de runas.

Ejemplo de estructura de cadena (simplificado):

// string en Go aproximadamente así:
type stringStruct struct {
    ptr *byte
    len int
}

Ejemplo de trabajo con una cadena:

s := "Привет"
fmt.Println(len(s)) // número de bytes
runes := []rune(s)
fmt.Println(len(runes)) // número de caracteres (runes)