GolangでString型を逆順にする

概要

GolangでString型を逆順に出力したい

解決策

stackoverflow.com

上記で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型について調べてみた。

qiita.com

上記のサイトによると、

  1. Golangではcode point(Unicodeの表を元に文字を16進数に変換したID)の符号化にUTF-8を採用。

  2. 1.のためにstring型はbyte単位で処理するので、数字や英語などは処理できる(1byteで表現されるため)。

  3. しかし、日本語などの2byte ~ 4byteで処理される単語ではstringで処理ができない。

  4. だから、rune型でcode pointとして処理した方が都合が良い。

参考

qiita.com