Go でスライスを逆順にしたかったんだけど、そういう関数は用意されてないようだ。じゃあどうするかというと for 文を使ってひとつずつ入れ替えてくしかないみたい。こんなふうに。
package main
import (
"fmt"
)
func main() {
s := []int{ 1,2,3,4,5 }
for i, j := 0, len(s) - 1; i < j; i, j = i + 1, j - 1 {
s[i], s[j] = s[j], s[i]
}
fmt.Println(s)
}
^o^ > go run reverse.go [5 4 3 2 1]
文字列を逆順にするにはいったん rune 型のスライスにしてから。
package main
import (
"fmt"
)
func main() {
s := "あいうえお"
runes := []rune(s)
for i, j := 0, len(runes) - 1; i < j; i, j = i + 1, j - 1 {
runes[i], runes[j] = runes[j], runes[i]
}
fmt.Println(string(runes))
}
^o^ > go run reverse_string.go おえういあ