string? byte? rune? 最近LeetCodeというサイトにあるコーディング問題をGoでちまちま解き進めている。 コーディング問題では普段はしないような処理を書くことがあるが、その中で意外にも詰まってしまったのが「文字列を一文字ずつ読んでいく」というものだった。 具体的にはstringにインデックスでアクセスするとbyteが取得でき、rangeでループするとruneが取得できるという点で混乱してしまった。printlnすると謎の数字が出てくるし一体何なんだっけ?という感じだ。 s := "abcde" for i := 0; i < len(s); i++ { b := s[i] // byte fmt.Println(b) // 227, 129, 130... } for _, r := range s { // rune fmt.Println(r) // 12354,