Go: invertire una stringa

Invertire una stringa è un'operazione comune in programmazione, e il linguaggio di programmazione Go offre diversi modi per farlo in modo efficiente e pulito. In questo articolo, esploreremo alcune delle tecniche più comuni per invertire una stringa utilizzando il linguaggio Go.

Metodo 1: Utilizzo di Rune e Slicing


package main

import "fmt"

func reverseString(input string) string {
	runes := []rune(input)
	for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
		runes[i], runes[j] = runes[j], runes[i]
	}
	return string(runes)
}

func main() {
	str := "Hello, Go!"
	reversed := reverseString(str)
	fmt.Println("Stringa originale:", str)
	fmt.Println("Stringa invertita:", reversed)
}

In questo approccio, convertiamo la stringa in un array di rune, che rappresentano i singoli caratteri Unicode. Utilizziamo quindi un ciclo for per scambiare i caratteri dalla fine all'inizio dell'array di rune, ottenendo così la stringa invertita.

Metodo 2: Utilizzo di un Buffer


package main

import (
	"fmt"
	"bytes"
)

func reverseStringWithBuffer(input string) string {
	var buffer bytes.Buffer
	for i := len(input) - 1; i >= 0; i-- {
		buffer.WriteByte(input[i])
	}
	return buffer.String()
}

func main() {
	str := "Hello, Go!"
	reversed := reverseStringWithBuffer(str)
	fmt.Println("Stringa originale:", str)
	fmt.Println("Stringa invertita:", reversed)
}

In questo secondo approccio, utilizziamo un buffer di byte per costruire la stringa invertita. Iteriamo sulla stringa originale partendo dalla fine e aggiungiamo ciascun carattere al buffer.

Conclusioni

Entrambi questi metodi sono validi per invertire una stringa in Go, ma la scelta tra di essi può dipendere dalle esigenze specifiche del tuo progetto. L'utilizzo di rune è particolarmente utile quando si tratta di stringhe che contengono caratteri Unicode, mentre l'approccio con il buffer può essere più efficiente in alcuni scenari.

Torna su