Golang系列之字符类型基本介绍

举报
yd_273762914 发表于 2022/02/07 22:40:56 2022/02/07
【摘要】 Golang系列之字符类型基本介绍 1、基本介绍 Golang没有专门的字符类型,如果要存放单个字符,一般采用关键字byte或者是rune,本文主要挑byte来讲,然后go的字符和java中的字符是一...

Golang系列之字符类型基本介绍

1、基本介绍

Golang没有专门的字符类型,如果要存放单个字符,一般采用关键字byte或者是rune,本文主要挑byte来讲,然后go的字符和java中的字符是一样的?在java中字符串是用字符拼接成的字符序列,而golang中字符串不是由字符构成的,是由字节构成的

byte:代表 UTF-8 编码中单个字节的值,是 uint8 类型的别名,占用一个字节
rune:代表单个 Unicode 字符,是 int32 类型的别名,占用4个字节

2、byte类型范围

类型 有无符号 占用存储空间大小 范围 备注
byte 与uint8一样,1个字节 0 ~ 255 当要存储字符时选用byte

3、使用注意事项

  • Go语言中统一使用utf-8编码,英文字母是占用1个字节,汉字占用3个字节,utf-8编码有自己的一套编码表,查看链接:http://www.mytju.com/classcode/tools/encode_utf8.asp
  • 打印一个byte定义的字符时,是打印出对应的utf-8编码值,不是具体字符
var c byte = 'a'
// 打印 , c=97,对应的utf-8编码值unicode,是不是和ASCII一样?
fmt.Println("c=" , c)

  
 
  • 1
  • 2
  • 3
  • 要打印byte定义的字符,要使用格式化打印
var c byte ='a'
// 打印, c=a
fmt.Ptinf("c=%c \n" , c).

// 给出具体unicode编码,打印字符
var n int = 21271
// 打印, n=北
fmt.printf("n=%c \n" , n)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • byte字符赋值不能超过255 unicode编码对应字符,超出要用int等类型赋值
//var c byte = '北'
var c int = '北'
// 超过255会报错,应该将byte改为int
fmt.printf("c=%c \n" ,c)

  
 
  • 1
  • 2
  • 3
  • 4
  • 在go中字符类型可以进行运算,相当于一个整数,因为一个字符对应一个Unicode
var n = 10+ 'a'
// n=107
fmt.Println("n=" , n)

  
 
  • 1
  • 2
  • 3

ASCII编码和UTF-8编码对比,ASCII编码包含了 33 个控制字符和 95 个可显示字符,可以理解为UTF-8编码是兼容ASCII编码的,UTF-8编码里包括了ASCII编码的字符编码,还进行了拓展,以适应国际化的发展

4、go中的字符本质

在go语言中,字符存储原理:
存储:字符->对应编码unicode->二进制
读取:二进制->unicode编码->字符

文章来源: smilenicky.blog.csdn.net,作者:smileNicky,版权归原作者所有,如需转载,请联系作者。

原文链接:smilenicky.blog.csdn.net/article/details/122639280

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。