Para invertir un texto en Go, debemos entender el funcionamiento de las cadenas de caracteres (string). En Go, una cadena de caracteres es una secuencia de bytes que representan caracteres Unicode. quiere decir que cuando trabajamos un caracter de un string es un caracter tipo byte.
package texto_test
import "testing"
func TestgirarTexto(t *testing.T) {
tests := map[uint8]struct {
texto string
textOk string
}{
1: {texto: "Primer texto", textOk: "otxet remirP"},
2: {texto: "Soy un dev", textOk: "ved nu yoS"},
3: {texto: "me gusta la pizza", textOk: "azzip al atsug em"},
4: {texto: "Robert Grisemer", textOk: "remesirG treboR"},
}
for k, vTest := range tests {
vResult, ok := girarTexto(vTest.texto)
if vTest.textOk != vResult {
t.Logf("Error test %v, esperaba %s y recibi %s", k, vTest.textOk, vResult)
t.Fail()
}
if len(vTest.texto) != len(vResult) {
t.Logf("Error test %v, tamaño de texto inicial %s final %s", k, len(vTest.texto), len(vResult))
t.Fail()
}
}
}

Golang no tiene una funcción “textReverse” para invertir cambiar el orden de un string pero la podemos crear!
5 ejemplos prácticos
cuando recorres un string es como si tomara cada letra y la metiera en un slice por eso podemos acceder a ella, pero esta en formato byte y debemos convertirla de nuevo a texto “string(byte)”. En 4 ejemplos la funcción se llamara “textReverse”, si prefieres la puedes llamar “girarTexto” o el nombre que elijas.
GO CONVIERTE LOS STRINGS A SLICE PARA MEDIRLOS (LEN())
Ejemplos de cómo girar texto y devolver un string al revés con Go
Primer ejemplo
En este primer ejemplo creamos la lógica (algoritmo) dentro la función principal (main)
- Iniciamos un For condicional
- inicialización: variable de control del bucle i con el valor y como valor el tamaño de la entrada menos 1 (len()-1)
- Condición: mientras i sea mayor o igual a 0 (i >= 0;)
- Post-ejecución: en cada iteración de i: en cada vuelta restamos 1 a i (i–)
Dtilizamos la función “reverse” para invertir una cadena de caracteres “Hola mundo”. La función toma como argumento una cadena de caracteres y utiliza un bucle “for” para invertir la secuencia de caracteres. Finalmente, la función devuelve la cadena invertida.
package main
import "fmt"
func main() {
texto := "bb aloh"
var resultado string
for i := len(texto) - 1; i >= 0; i-- {
resultado += string(texto[i])
}
fmt.Println(resultado)
}
Segundo ejemplo
func textReverse(texto string) string {
var resultado string
for i := len(texto) - 1; i >= 0; i-- {
resultado += string(texto[i])
}
return resultado
}
Tercer ejemplo | Invertir texto usando punteros y for range
func giraTexto(pointerText *string) {
text := *pointerText
result := ""
for _, v := range text {
result = string(v) + result
}
*pointerText = result
}
Cuarto ejemplo | Invertir texto usando punteros
Si te gusta el sabor de los pointers aquí tienes un ejemplo de como inverter texto usando punteros en Go.
func girar(t *string) {
texto := *t
result := ""
for i := len(texto) - 1; i >= 0; i-- {
result += string(texto[i])
}
*t = result
}
Quinto ejemplo | Invertir texto usando punteros
func reverseString(str string) string{
byte_str := []rune(str)
for i, j := 0, len(byte_str)-1; i < j; i, j = i+1, j-1 {
byte_str[i], byte_str[j] = byte_str[j], byte_str[i]
}
return string(byte_str)
}
Sexto ejemplo | Invertir texto usando punteros
func girar(t *string) {
texto := *t
*t = []{}
for i := len(texto) - 1; i >= 0; i-- {
*t += string(texto[i])
}
}
Tabla de test para la función textReverse
Con este test pones aprueba tu algoritmo con casos diferentes y valora:
package texto_test
import "testing"
func TestgirarTexto(t *testing.T) {
tests := map[uint8]struct {
texto string
textOk string
}{
1: {texto: "Primer texto", textOk: "otxet remirP"},
2: {texto: "Soy un dev", textOk: "ved nu yoS"},
3: {texto: "me gusta la pizza", textOk: "azzip al atsug em"},
4: {texto: "Robert Grisemer", textOk: "remesirG treboR"},
}
for k, vTest := range tests {
vResult, ok := girarTexto(vTest.texto)
if vTest.textOk != vResult {
t.Logf("Error test %v, esperaba %s y recibi %s", k, vTest.textOk, vResult)
t.Fail()
}
if len(vTest.texto) != len(vResult) {
t.Logf("Error test %v, tamaño de texto inicial %s final %s", k, len(vTest.texto), len(vResult))
t.Fail()
}
}
}
https://play.golang.com/p/aTS8-9Cikf5 (se podría hacer una copia del código para enviarlo al playground)


- TikTok
- Youtube
Ahora que sabemos cómo invertir una cadena de caracteres en Go, podemos aplicar esta técnica para invertir cualquier texto que queramos. Aquí te presentamos 5 ejemplos de cómo aplicar la inversión de texto en Go:
- “Hola mundo” invertido es “odnum aloH”
- “Go es divertido” invertido es “odnetrivid se oG”
- “Programar es divertido” invertido es “odnetrivid se ramargorP”
- “El futuro pertenece a los que creen en la belleza de sus sueños” invertido es “smeud sus edleb la ni neerC euq sol a ebel a nelec eht niocreP ortuf lE”
- “La imaginación es más importante que el conocimiento” invertido es “tnemegaknok eht euq etnatropmi aL”
Ahora sabes 5 algoritmos para invertir un textos en go, y la buena noticia es que es muy similar a la hora de invertir un Slice en Go
Un abrazo y recuerda que debes tener una buena hidratación, bebe agua!