一.字符型概述
- 字符型存放单个字母或单个文字
- Go语言不支持字符类型,在Go语言中所有字符值都转换为对应的编码表中int32值
-
二.编码发展历史
最开始使用8个可开合晶体管表示世界万物,这就是字节的由来.后来生产出可以控制字节的机器,出现了计算机
- 把字节中32以下情况称为控制码,后在控制码基础上添加空格、标点符号、数字、大小写字母等直到127,最终形成了ANSI的ASCII码(American Standard Code for Information Interchange,美国信息交换标准代码),这时已经较好的支持英文了
- 随机计算机在全球的应用,在原ASCII基础上添加了新的字母、符号、横线竖线等直到255号,从128到255被称为扩展字符集但是此时计算机还是在只支持英文
- 等中国开始使用计算机,为了支持中文,保留了前127号,称这些为半角,把后面的内容以两个字节拼接形成中文汉字和表单符号,这后半部分就是全角,其中汉字6763个满足中文大部分情况的要求,称这个编码为GB2312
- 随着计算机在中国的普及,使用GB2312时有的汉字无法打出,又在GB2312基础上添加了近20000个汉字(包括繁体和符号等)形成GBK,后来为支持少数民族又在GBK基础上推出GB18080
- 全球中每个国家都有着自己的一套编码,ISO国际为了统一标准,重新定义一套编码,希望包含全球所有的文字和符号,俗称Unicode
随着互联网的快速发展,为解决Unicode网络传输中流浪浪费问题,出现了UTF编码,有UTF-8(8位传输)和UTF-16(16为传输)两种.其中UTF-8使用最多,为变长编码方式,中文占3个自己.
三.字符示例
示例
func main() {
//定义数字
var i rune=`1 //0x5F20
fmt.Println(i)
//输出汉字张
fmt.Printf("%c\n",i)
//获取转换后的内容
c:=fmt.Sprintf("%c",i)
fmt.Println(c)
}
也可以使用单引号表示一个字符类型,但是本质还是正数
func main() {
c := '张'
fmt.Println(c) //24352
fmt.Printf("%T", c) //int32
}