Reverse букв в слове, используя range и append. Golang

Задание: реализовать реверс букв в строке (range по массиву rune + append). По документации append добавляет значение в конец массива. Как с помощью функции append можно добавить значение в начало, что получился реверс, например, "Hello" --> "elloH".

Код:

package main

import (
    "fmt"
)

func ReverseString(s string) string {   
    newWord := make([]rune, len(s)) 
    fmt.Println(newWord)
    for _, v  := range s {
        fmt.Println(v)
        newWord = append(newWord[0:], v)
    }
    return string(newWord)
}

func main() {
    fmt.Println(ReverseString("Hello"))
}

https://play.golang.org/p/YYLljr0fv_5


Ответы (2 шт):

Автор решения: Ainar-G

Задание, конечно, довольно странное, но как-то так:

func ReverseString(s string) string {
    var l = len(s)
    var rev = make([]rune, l)
    for i, r := range s {
        _ = append(rev[:l-1-i], r)
    }

    return string(rev)
}

Дисклеймеры про то, что, когда мы говорим об интернационализованном тексте, всё не так просто, думаю, не нужны.

https://play.golang.org/p/yXAPldfXRSR

→ Ссылка
Автор решения: Stanlyzoolo

Вот еще одно решение данной задачи:

func ReverseWordTwo(s string) string {
    var newWord []rune
    for _, v := range s {
        newWord = append([]rune{v}, newWord...)
    }

    return string(newWord)
}
→ Ссылка