• Skip to main content
  • Skip to footer

Ghoper logic

Algoritmos y lógica con Golang

  • Fácil
  • Intermedio
  • Avanzado
  • Todos
  • GitHub

Invertir texto con Go en pocas lineas

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.

[go highlight=”4-5″ title=”// Primer ejemplo”]
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()
}
}
}
[/go]

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)

  1. 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)

  • Instagram
  • 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:

  1. “Hola mundo” invertido es “odnum aloH”
  2. “Go es divertido” invertido es “odnetrivid se oG”
  3. “Programar es divertido” invertido es “odnetrivid se ramargorP”
  4. “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”
  5. “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!

Footer

Primeros con algoritmia

Algoritmo de Floyd

Algoritmos por dificultad en Go

  • Fácil
  • Intermedio
  • Avanzado
  • Todos
  • GitHub

Cada sábado estudio y juego con un algoritmo, y se me ocurrió compartir las notas notas para me obligarme a escribir mejor y así  empece a escribir en 2021.

Ahora puedes resolverlos con IA, pero lo hago por curiosidad!

Algoritmos fáciles con Go

  • Algoritmo de Floyd
  • In-Place
  • Amazon Interview | Asteroid Collision | Data Structures & Algorithms
  • Cifrado César
  • Básicas
  • Más usadas
  • Complejas

Algoritmos intemedios con Go

  • Algoritmo de Floyd
  • In-Place

Algoritmos avanzados con Go

  • Algoritmo de Floyd
  • In-Place

Copyright © 2026 · Log in