go基础第一篇:常用语法

在用for...range遍历string时,第一个参数是字符索引,可能不是连续的,第二个参数是int32类型,即rune类型,rune是int32的别名,第二个参数的值是该字符在unicode字符集中对应的码点,如果字符是中文,那么第二个参数的值将大于255。rune其实就是字符。可以直接用string()包裹起来,把码点转成字符。

在用for i := 0; i < len(s); i++遍历string时,索引i是连续的,s[i]是uint8类型,即byte类型,byte是uint8的别名。

func main() {
    s := "广东"
    f1(s)
    fmt.Println("-----------------------------")
    f2(s)
}

func f1(s string) {
    for i, b := range s {
        fmt.Printf("%v\n", i)
        fmt.Printf("%v\n", b)
    }
}

func f2(s string) {
    for i := 0; i < len(s); i++ {
        b := s[i]
        fmt.Printf("%v\n", i)
        fmt.Printf("%v\n", b)
    }
}

f1函数用for...range遍历字符串,当字符串含中文时,i将不连续。

f2函数用for i := 0; i < len(s); i++遍历字符串,即使字符串含中文,i也会连续,s[i]<=255。

posted on 2020-05-22 18:16  koushr  阅读(430)  评论(0)    收藏  举报

导航