一篇文章带你了解Go语言基础之字节类型
回复“Go语言”即可获赠Python从入门到进阶共10本电子书
今
日
鸡
汤
连峰去天不盈尺,枯松倒挂倚绝壁。上篇文章中我们学习了Go语言基础中的变量,一篇文章带你了解Go语言基础之变量,这篇文章我们继续介绍Go语言基础知识,今天跟大家分享的是基础数据类型之字节类型,一起来学习下吧~前言Hey,大家好呀,我是星期八,这次咱们继续学习Go基础之字节类型吧。
上文之字符串回顾在上述文章中,我们学过了字符串类型。
在Go语言中,字符串类型是基本类型,在栈中存储,其结构如下。
可以看到,在Go中,字符串其实就是指向了一个连续的内存地址,并且记录了长度,读取是一次性读取出来的。
那么,如上图所示,内存里面存的一个个字母叫啥呢???
byte和rune类型字符串是一个个字符拼接成的,反过来,也是一个个字符拼接成的字符串,而一个个的字符,就被称为字节(byte)。
字节占用1个字节大小,只能存字母了,标点符号之类的,不能存中文。
当然,存中文怎么办???在Go中有一个rune,和byte类似,本质和byte一样,只不过rune一个占用4个字节。
rune使用utf-8编码,可以存中文,各种语言。
所以,处理中文尽量用rune类型。
定义个(字节)byte类型变量字符用单引号"号包裹起来。
代码
package mainimport "fmt"func main() {var a byte = "a"fmt.Println(a)}小朋友,是否有很多疑问???为什么是97
原因
byte代表的是一个ASCII码的一个字符,同理,rune可以理解为是byte的一个超集,向下兼容byte。
package mainimport "fmt"func main() {var a rune = "a"fmt.Println(a)}
结果:
但是rune里面可以写中文,byte不行。
byte不能存中文rune可以存中文发现了吗,打印的竟然是一个数字?这是为啥???
就拿字母a来说,其实打印的是ASCII对应的数字,打印的是他的十进制。
同理,字符张也是,这里就不做例子了,因为utf-8表太大了。
遍历字符串方式一package mainimport "fmt"func main() {s := "我是法外狂徒,张三,hahaha"for _, r := range s {fmt.Printf("%c \n",r)}}方式二
package mainimport "fmt"func main() {s := "我是法外狂徒,张三,hahaha"for i := 0; i < len(s); i++ {//中文会乱码,不推荐fmt.Printf("%c \n",s[i])}}修改字符串
同理,字符串相当于是字节列表组成的,是不能直接修改的,想要直接修改需要打散成字节列表才行。
package mainimport "fmt"func main() {//只有英文的情况下s1 := "hello world"var s1_byte_list = []byte(s1) //打散成字符列表s1_byte_list[6] = "F" //修改下表为6的字符为Fs1 = string(s1_byte_list) //打散的字符列表在组装成字符串fmt.Println(s1) //输出 hello 6orld//带有中文的情况s2 := "天空好像下雨,我好像住你隔壁vay"var s2_rune_list = []rune(s2) //打散成utf-8字符列表s2_rune_list[5] = "雪" //修改下表为5的字符为雪s2 = string(s2_rune_list) //打散的utf8字符转字符串fmt.Println(s2) //输出 天空好像下雪,我好像住你隔壁}总结
上述我们学习了Go基础之数据类型。如果在操作过程中有任务问题,记得下面讨论区留言,我们看到会第一时间解决问题。
我是码农星期八,如果觉得还不错,记得动手点赞一下哈。感谢你的观看。
-------------------End-------------------
欢迎大家点赞,转发,转载,感谢大家的相伴与支持
想加入学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...