1.字符是怎么存储的

  • 数字怎么存(一一对应)

一个bit是一个盒子,可以放0或1
8个bit一组是一个字节,有256种组合方式
两个字节(16bit)有65536种组合
image.png

几种组合就对应几种数字,整数可以直接对应

  • 字符怎么办(字符集)

image.png
字符集促成了 字符二进制 的合作
image.png

  • 字符集太多怎么办

不同的映射关系—->不同的字符集
不统一,而且不能不能表示所有字符
后来推出了 Unicode 字符集

  • 有了字符集,怎么划分二进制呢

每个字符对应的二进制长度不一样,合在一起怎么划分边界呢
怎么办?高位补零!大家都按照最长的算
方案:
定长编码
image.png
定长编码浪费内存

变长编码
image.png

需要借助UTF8
image.png

  • String是什么样的结构

C语言:
image.png
Go说不行
声明一个变量 var str ="hello"
image.png

这里str占两个字符(16bit)

image.png

  • 修改问题

可以这样读取:
s1[0]

但是不能s1[0]=’A’修改

摆脱字符串无法修改:
强转为slice

slice如何限制修改:
unsafe包