中文字符串遍历

问题

置信很多人都遇到过中文字符串遍历乱码的状况。
遍历字符串个别有两种形式:下标遍历,for...range,如果字符换蕴含中文,应用下标遍历时则会呈现乱码。

解决办法

将字符串转为[]rune类型,再应用下边遍历则不会呈现乱码。

package mainimport "fmt"func main(){    //str := "abc"    str := "hi,你好"    //下标遍历    for i,v := range str{        fmt.Printf("str[%d]=%v\n", i, string(v))    }    //for...range遍历    for i:=0; i<len(str); i++{        fmt.Printf("str[%d]=%v\n", i, string(str[i]))    }    //转为[]rune类型,再下边遍历    strRune :=  []rune(str)    for i:=0; i<len(strRune); i++{        fmt.Printf("strRune[%d]=%v\n", i, string(strRune[i]))    }}