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 おえういあ