
获得徽章 1
- 1. 学习基于 tcp 的 socket 编程
2.每日一库之 strings 库,字符串拼接性能:strings.Join ≈ strings.Builder > bytes.Buffer > '+' > fmt.Sprintf
3. http 相关知识
4. sync.Cond 原理
5. sync.Mutex 原理展开评论点赞
string 类型:底层指向的是[]byte 数组,两者之间可以相互转换,string 想要更改某一个字符需要先将类型转换为 []byte,才能进行修改。(切片的底层指向一个数组)
Unicode 编码表(32 位编码,可以表示2^32个字符,足以包含世界上的所有字符):在 v13.0版本中,共包含了 143859 个字符。
因为 Unicode 固定占用 4 个字节,对于某些字符(Ascll 码表中的值 0-127),编码时不需要占用4 个字节,只需要 1 个字节,还有的如中文、日文和韩文需要 3 个字节。于是,就出现了变长编码方式 UTF-8.
UTF-8 是一种对 Unicode 的编码方式(使用 1-4 个字节进行编码),码点对应了字符在 unicode 中的编号。
1byte 编码的码点范围为:0-7F,对应 10 进制就是 0-127, 完全兼容了 ascii 编码表。
2bytes 编码的码点范围是80-7FF, 对应的 10 进制就是 128-2047,这部分主要是一些拉丁文
3bytes 编码的码点范围为 800-FFFF,对应的 10 进制是 2048-65535;中文的码点范围就在这里面,范围为4E00-9FFF:19968-40959共计 20992 个字符.
rune:别名又叫做 int32,rune 值表示字符的码点,而码点就是 unicode 中字符的编码,将 string 转换成 rune 类型的同时,就是将 UTF-8 编码的字符,变成一个个码点(code-point)
string 遍历:
for i, v := range "汉字" {}
i = 0
i = 3 (底层 byte 对应的位置)
而不是
i = 0
i = 1
#青训营笔记创作活动#
展开评论点赞