遍历字符串

package main

import "fmt"

func main() {
    var str = "Hello北京&"

    //1. 按index遍历,这种方式按照字节遍历,对于非ASCII字符会出现乱码。因为"北京"每个字占3个字节
    fmt.Println("按index遍历开始")
    for i := 0; i < len(str); i++ {
        fmt.Printf("%d:%c--", i, str[i])
    }
    fmt.Println("按index遍历结束")

    //2. 用for-range遍历,这种方式是按照字符遍历的,不会出现乱码,但是下标index会出现不连续的情况,它具有不确定性
    fmt.Println("for-range遍历开始")
    for i, ch := range str {
        fmt.Printf("%d:%c--", i, ch)
    }
    fmt.Println("for-range遍历结束")

    //3. 转rune切片遍历
    fmt.Println("转rune切片遍历开始")
    str2 := []rune(str)
    for i := 0; i < len(str2); i++ {
        fmt.Printf("%d:%c--", i, str2[i])
    }
    fmt.Println("\n转rune切片遍历结束")
}