
Go 字符类型的使用及细节
发布日期:2021-05-07 15:12:24
浏览次数:20
分类:原创文章
本文共 1348 字,大约阅读时间需要 4 分钟。
字符类型的使用及细节
- 基本介绍
- Golang 中没有专门的字符类型,如果要存储单个字符(字母),一般使用 byte 来保存。
- 字符串就是一串固定长度的字符连接起来的字符序列。
- Go 的字符串是由单个字节连接起来的。
- 也就是说对于传统的字符串是由字符组成的,而 Go 的字符串不同,它是由字节组成的。
- 案例:
var c1 byte = 'a'var c2 byte = '0'fmt.Println("c1 = ", c1 )fmt.Println("c2 = ", c2 )
- 输出结果:
- 解释:
- 当我们直接输出byte值,就是输出了对应的字符的码值。
- 如果我们需要输出对应对应字符,需要使用格式化输出
var c1 byte = 'a' var c2 byte = '0' fmt.Printf("c1 = %c \n", c1 )fmt.Printf("c2 = %c", c2 )
- 输出结果:
- 对于汉字,超过byte范围
var c byte = '木' //byte 0-255fmt.Printf("c = %c", c)
- 报溢出
- 改为int(int64)
var c int = '木' fmt.Printf("c = %c\nc对应的码值%d", c, c)
- 输出:
- 对上面代码说明
- 如果我们保存的字符在 ASCII 表的,比如[0-1, a-z,A-Z..]直接可以保存到 byte
- 如果我们保存的字符对应码值大于 255,这时我们可以考虑使用 int 类型保存
- 如果我们需要安装字符的方式输出,这时我们需要格式化输出,即 fmt.Printf(“%c”, c1)
字符类型使用细节
- 字符常量是用单引号 '' 括起来的单个字符。
- 例如:var c1 byte = 'a' var c2 int = '中' var c3 byte = '9'
- Go 中允许使用转义字符 '\’来将其后的字符转变为特殊字符型常量。
- 例如:var c3 byte = ‘\n’ // '\n'表示换行符
- Go 语 言 的 字 符 使 用 UTF-8 编 码 , 如 果 想 查 询 字 符 对 应 的 utf8 码 值
- 英文字母 1 个字节 汉字3 个字节
- 在 Go 中,字符的本质是一个整数,直接输出时,是该字符对应的 UTF-8 编码的码值。
- 可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的 unicode 字符
var c int = 22269 // 22269 -> '国'fmt.Printf("c = %c", c)
- 输出:
- 字符类型可以进行运算的,相当于一个整数,运算时按照码值运行
var c = 10 + 'a' // 'a' 码值:97fmt.Println("c =", c)
- 输出结果:
- 字符类型本质探讨
- 字符本质是个整数
- 字符型 存储到 计算机中,需要将字符对应的码值(整数)找出来
- 存储:字符--->对应码值---->二进制-->存储
- 读取:二进制----> 码值 ----> 字符 --> 读取
- 字符和码值的对应关系是通过字符编码表决定的(是规定好)
- Go 语言的编码都统一成了 utf-8。非常的方便,很统一,再也没有编码乱码的困扰了
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月21日 01时43分56秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Serverless 在大规模数据处理中的实践
2019-03-04
运营商的互联网蜕变,从沃云平台开始
2019-03-04
下一次 IT 变革:边缘计算(Edge computing)
2019-03-04
Docker精华问答 | task与executor有什么关系?
2019-03-04
英特尔强势上新一大波数据产品,小伙伴们“奔走相告”…… | 极客头条
2019-03-04
SaaS前世今生:老树开新花
2019-03-04
微信小程序生命周期 / 页面的生命周期 / 页面的用户行为
2019-03-04
Maven的配置
2019-03-04
如何在bilibili上下载学习视频?
2019-03-04
09-Vue之本地应用v-for指令
2019-03-04
2020.2.13普及C组 罗密欧与朱丽叶的约会【纪中】【前缀和】
2019-03-04
纪中2020.3.18普及C组模拟赛总结
2019-03-04
YbtOJ 递推算法课堂过关 例5 平铺方案【递推(简单DP)】
2019-03-04
YbtOJ hash和hash表课堂过关 例1 字符串哈希【hash】
2019-03-04
CSUST 2021 周赛 2 题解
2019-03-04
前后端数据交互之表单
2019-03-04
剑指offer JZ15 反转链表
2019-03-04
剑指offer JZ21 栈的压入弹出序列
2019-03-04
剑指offer JZ31 整数中1出现的次数
2019-03-04
实现基于scrapy框架的天气预报爬虫hengYangSpaider @572311文
2019-03-04