字符字面量

字符字面量必须使用单引号括起来’’,Go 中的字符完全兼容 utf8。

1
2
3
4
5
6
7
8
9
10
11
'a'
'ä'
'你'
'\t'
'\000'
'\007'
'\377'
'\x07'
'\xff'
'\u12e4'
'\U00101234'

unicode和utf-8的区别

unicode 是一种字符集,而 utf-8 是一种以 unicode 字符集为基础的编码格式

utf-8编码是怎么算的

UTF-8 的编码规则如下:

  • 1 字节:0xxxxxxx(0-127)
  • 2 字节:110xxxxx 10xxxxxx(128-2047)
  • 3 字节:1110xxxx 10xxxxxx 10xxxxxx(2048-65535)
  • 4 字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx(65536 及以上)
    比如说小写字母 a,转为 unicode 为 U+61 ,对应的 utf-8 编码为 61
    比如说汉字 ,转为 unicode 为 U+4E9A,十进制是 20122,二进制1001101000111010,通过规定好的填充方法填充二进制,即 utf-8 编码为 E9 A8 BA

utf-8,utf-16,utf-32的区别

编码方式单元大小空间效率主要用途
UTF-81 个字节高效(对拉丁字符)适合拉丁字符(如英语),网页和文件存储
UTF-162 个字节中等(对非拉丁字符高效)Windows API、Java、JavaScript(内部处理)
UTF-324 个字节低效图形和文本处理库

编码一个字符 a
utf-8 61(1 个字节)
utf-32 00 00 00 61(4 个字节)

字符串字面量

字符串字面量必须使用双引号””括起来或者反引号(反引号字符串不允许转义),而且双引号中可以识别 unicode

1
2
3
4
5
6
7
8
9
`abc`                // abc
`\n` // \n
"\n"
"\"" // "
"Hello, world!\n"
"今天天气不错"
"日本語"
"\u65e5本\U00008a9e" // 日本语
"\xff\u00FF"