Reversing a String by Word or Character
How do I reverse a string by word or character?
Reversing a string by character is very similar to the process to reverse an
array.  The difference is that strings are immutable in Go.  Therefore, we must
first convert the string to a mutable array of runes ([]rune), perform the
reverse operation on that, and then re-cast to a string.
    test_reverse_by_character.go
    
  package main
import "fmt"
func reverse(s string) string {
	chars := []rune(s)
	for i, j := 0, len(chars)-1; i < j; i, j = i+1, j-1 {
		chars[i], chars[j] = chars[j], chars[i]
	}
	return string(chars)
}
func main() {
	fmt.Printf("%v\n", reverse("abcdefg"))
}
$ go run test_reverse_by_character.go
gfedcba
Reversing a string by word is a similar process. First, we convert the string into an array of strings where each entry is a word. Next we apply the normal reverse loop to that array. Finally, we smush the results back together into a string that we can return to the caller.
    test_reverse_by_word.go
    
  package main
import (
	"fmt"
	"strings"
)
func reverse_words(s string) string {
	words := strings.Fields(s)
	for i, j := 0, len(words)-1; i < j; i, j = i+1, j-1 {
		words[i], words[j] = words[j], words[i]
	}
	return strings.Join(words, " ")
}
func main() {
	fmt.Println(reverse_words("one two three"))
}
$ go run test_reverse_by_word.go
three two one