Golang基础 (字符型[byte和rune])

一.字符型概述

  • 字符型存放单个字母或单个文字

  • Go语言不支持字符类型,在Go语言中所有字符值都转换为对应的编码表中int32值

  • Go语言默认使用UTF-8编码

  • Go语言的字符有以下两种:一种是 uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。另一种是 rune 类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 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个自己.

三.字符示例

示例

package main

import (
	"fmt"
	"unicode/utf8"
)

func main() {
	//定义数字i
	var i rune=24352 //十六进制为0x5F20
	fmt.Println(i)
	//输出汉字张
	fmt.Printf("%c\n",i)
	//获取转换后的内容
	a:=fmt.Sprintf("%c",i)
	fmt.Println(a)
    //'_'为一个占位符,即忽略这个变量
    //将转换后的字符转换为rune类型的值
	r, _ := utf8.DecodeRuneInString(a);//返回 转换后的r和状态码size,此处通过占位符将size忽略
	fmt.Println(r)
	//	c := '张';
	//	fmt.Println(c) ;     //24352
	//	fmt.Printf("%T", c) ;//int32

}

也可以使用单引号表示一个字符类型,但是本质还是正数

func main() {
	c := '张'
	fmt.Println(c)      //24352
	fmt.Printf("%T", c) //int32
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值