go语言之字符串的两种遍历方式

本文介绍了Go语言中遍历字符串的两种方式:按字节数组遍历和按Unicode字符遍历。通过示例代码展示了如何使用这两种方式,并解释了在UTF-8编码下中文字符所占字节数的不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在go语言中支持两种方式遍历字符串。第一种方式是以字节数组的方式遍历。例如代码:
str := "beijing,北京"
for i := 0; i < len(str); i++{
	fmt.Println(i, " ", str[i])
}

输入结果为:

0 98
1 101
....
10   151
11   228
12   186
13   172

可以看出,这个字符串长度为14,尽管从直观上来说,这个字符串应该只有10个字符,这是因为每个中文字符在UTF-8中占3个字节,而不是1个字节。

第二种方式是以Unicode字符遍历,例如代码:

str := "beijing,北京"
for index, val := range str {
	fmt.Println(index, " ", val)
}

输出结果为:

0   98
1   101
......
7   44
8   21271
11   20140
以Unicode字符方式遍历时,每个字符的类型是rune,而不是byte。rune类型在go语言中占用四个字节。
在go语言中支持两个字符类型,一个是byte(实际上是uint8的别名),代表UTF-8字符串的单个字节的值,另一个是rune,代表单个Unicode字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值