Go语言的rune和byte的区别

本文详细介绍了Go语言中字符类型的两种形式:byte和rune。byte通常用于处理ASCII字符,而rune则适用于Unicode和UTF-8编码的字符。通过示例代码展示了不同遍历方式下对应的元素类型。

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

 博客主页:🏆看看是李XX还是李歘歘 🏆

🌺每天不定期分享一些包括但不限于计算机基础、算法、后端开发相关的知识点,以及职场小菜鸡的生活。🌺

💗点关注不迷路,总有一些📖知识点📖是你想要的💗

⛽️今天的内容是     Go语言的rune和byte的区别     ⛽️💻💻💻

在 Go 语言中支持两个字符类型,一个是 byte (实际上是 uint8 的别名),代表 UTF-8 字符串 的 单个 字节的值,用来储存ASCII码,表示一个ASCII码字符;另一个是 rune(实际上是int32),代表单个 Unicode字符,常用来处理unicode或utf-8字符(一切字符),就是rune的使用范围更大。

出于简化语言的考虑, Go 语言的多数 API 都假设字符串为 UTF-8编码,在unicode中,一个中文占两个字节,utf-8中一个中文占三个字节,golang默认的编码是utf-8编码,因此默认一个中文占三个字节 。尽管Unicode 字符在标准库中有支持,但实际上较少使用。

不同的字符串遍历方式对应不同的元素类型:
package main

import "fmt"

func main() {
	s:="asc"
	fmt.Printf("%T  ",s[0])
	fmt.Println()
	for i:= range s {
		fmt.Printf("%T ",s[i])
	}
	fmt.Println()
	for _, i2 := range s {
		fmt.Printf("%T ",i2)
	}
	fmt.Println()
	for i := 0; i < len(s); i++ {
		fmt.Printf("%T ",s[i])
	}
}

range一个返回值的对应uint8----byte

range两个返回值的对应int32----rune

for循环对应uint8----byte

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值