概要
GolangでString型を逆順に出力したい
解決策
上記でGolangでは、逆順にする方法がないので関数を改めて定義する必要があるみたい。
なので、
func Reverse(s string) string { 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] } return string(runes) }
と書く。
string型とrune型
rune型について調べてみた。
上記のサイトによると、
Golangではcode point(Unicodeの表を元に文字を16進数に変換したID)の符号化にUTF-8を採用。
1.のためにstring型はbyte単位で処理するので、数字や英語などは処理できる(1byteで表現されるため)。
しかし、日本語などの2byte ~ 4byteで処理される単語ではstringで処理ができない。
だから、rune型でcode pointとして処理した方が都合が良い。