当前位置: 首页 > 科技观察

一篇文章带你了解Go语言基本字节类型

时间:2023-03-13 07:29:56 科技观察

前言大家好,我周五了,这次我们继续学习Go语言的基本字节类型。上面的字符串回顾在上面的文章中,我们了解了字符串类型。在Go语言中,字符串类型是一个基本类型,存储在栈中,其结构如下。可以看出,在Go中,字符串实际上指向了一个连续的内存地址,并且记录了长度,读取是一次性读取。那么,如上图所示,内存中存储的字母叫什么???byte和rune类型的字符串是一个个字符拼接起来的,反过来也是一个个字符串拼接起来的,每个字符称为一个byte。字节占1个字节大小,只能存放字母、标点符号等,不能存放中文。当然,要拯救中国人怎么办???Go中有一个rune,类似于byte,本质和byte是一样的,只不过rune占4个字节。rune使用utf-8编码,可以保存中文和各种语言。因此,在与中文打交道时,尽量使用符文类型。定义一个用单引号括起来的(字节)字节类型变量字符'.代码packagemainimport"fmt"funcmain(){varabyte='a'fmt.Println(a)}小朋友们,你们的问题多吗???为什么是97?一个字节表示一个ASCII码的字符。同理,rune可以理解为byte的超集,向后兼容byte。packagemainimport"fmt"funcmain(){vararune='a'fmt.Println(a)}结果:中文可以用符文写,但不能用字节写。字节救不了中文。符文可以拯救中国人。你有没有发现打印出来的是一个数字?为什么???以字母a为例,其实打印的是ASCII对应的数字,打印的是它的十进制。同理,字符表也是如此,这里就不举例了,因为utf-8的表太大了。遍历字符串的方式packagemainimport"fmt"funcmain(){s:="我是歹徒,张三,哈哈哈"for_,r:=ranges{fmt.Printf("%c\n",r)}}方法2packagemainimport"fmt"funcmain(){s:="我是个亡命之徒,张三,哈哈哈"fori:=0;i