Go の string と range
string を range したときに返るインデックスは
文字列中でのバイト位置を表しているということを知りました。
今まで何文字目というインデックスが返るものと勘違いしてました。
忘れないようにメモしておきます。
参考
https://golang.org/doc/effective_go#for
サンプルコード
https://play.golang.org/p/0HDIL562LUe
package main import ( "fmt" ) func main() { for pos, r := range "Aあ1" { fmt.Printf("character %c starts at byte position %d\n", r, pos) } }
実行結果
character A starts at byte position 0 character あ starts at byte position 1 character 1 starts at byte position 4