¿Cómo se pueden trabajar con cadenas en el lenguaje Go?
sobes.tech AI
Respuesta de la IA
Las cadenas en Go son secuencias inmutables de bytes. Pueden representar tanto texto UTF-8 como datos binarios arbitrarios.
Formas principales de trabajar:
-
Declaración e inicialización:
var s1 string // Cadena vacía s2 := "hola" // Inicialización con literal de cadena s3 := `multilínea cadena` // Literal de cadena sin procesar -
Longitud de la cadena:
len(s2) // Longitud en bytes. Para "hola" será 4. -
Acceso a bytes:
b := s2[0] // Obtiene el byte en el índice. Retorna 'h' (en UTF-8).El acceso directo a bytes no garantiza obtener un carácter UTF-8 completo.
-
Acceso a runas (caracteres UTF-8): Las cadenas se pueden iterar por runas:
for index, runeValue := range s2 { fmt.Printf("Índice: %d, Runa: %c\n", index, runeValue) }Longitud en runas:
utf8.RuneCountInString(s2) // Longitud en runas. Para "hola" será 4. -
Concatenación de cadenas:
str1 := "hello" str2 := " world" result := str1 + str2 // Concatenación con +Para concatenaciones eficientes de muchas cadenas, usa
strings.Builder.var sb strings.Builder sb.WriteString("hello") sb.WriteString(" ") sb.WriteString("world") result := sb.String() // Obtiene la cadena resultante -
Conversión entre cadenas y slices de bytes/runes:
byteslice := []byte(s2) // Cadena a slice de bytes rs := []rune(s2) // Cadena a slice de runas backToString := string(byteslice) // Slice de bytes a cadena backToString = string(rs) // Slice de runas a cadena -
Paquete
strings: Ofrece muchas funciones útiles:Contains,HasPrefix,HasSuffixIndex,LastIndexReplace,ToUpper,ToLower,Trim,TrimSpaceSplit,Join
-
Paquete
strconv: Para convertir cadenas a otros tipos de datos (números, booleanos) y viceversa.i, err := strconv.Atoi("123") // Cadena a int s := strconv.Itoa(456) // int a cadena -
Inmutabilidad: Cualquier operación que parezca modificar una cadena (como concatenar) en realidad crea una nueva cadena. Esto es importante para el rendimiento en cambios frecuentes. En tales casos, es mejor usar
[]byteostrings.Builder.