go 字符串的遍历

2017-09-07  本文已影响234人  chenaixiang

一 go字符串简介

在go 语言中字符串是一个不可变的字节序列,最基本的组成元素的字节,并且使用UTF-8的编码方式,所以每个字符对应的字节长度是不一样的。

二 字符串遍历

2.1 其他语言的遍历方式(以php的为例)

其他语言基本上支持两种遍历方式。

2.1.1 下表遍历

s := "hello,world"
for i =0;i<len(s);i++ {
    s[i]
}

2.1.2 range 方式

s := "hello,world"

for k,v := range {
    
}

2.2 go的字符串变量方式

2.2.1 range 的方式

和其他语言一样,直接支持range的方式

    s := "hello,world"
    for k,v := range s {
    
    }

2.2.2 显示将unicode 转换为rune 的方式

go 标准库提供关于utf8到rune的函数

    s := "hello,世界"
    
    for i:=0;i<len(s) {
        r,size :=  utf8.DecodeRuneInString(s[i:])
        
        i += size
    }

2.2.3 下标直接访问

我们之所以不能直接使用下标访问字符串,是因为我们通过下标访问的是第几个字节而不是第几个字符,而utf8方式的字符长度又是不固定的,但是我们可以将utf8编码的字符串 变为utf-32的编码方式,也就是go中的[]rune.
    s := "hello,世界"
    
    t :=[]rune(s)
    for i:=0;i<len(t);i++{
        t[i] // 就代表第i个字符,而不是字节了
    }
上一篇 下一篇

猜你喜欢

热点阅读