字符类型
golang中没有专门的字符类型,如果要存储单个字符(字母),一般用byte来保存
字符串就是一串固定长度的字符连接起来的字符序列。go的字符串是由单个字节连接起来的,也就是说对于传统的字符串是由字符组成的,而go的字符串不同,它是由字节组成的
package main
import "fmt"
//演示golang中字符类型使用
func main(){
var c1 byte = 'a'
var c2 byte = '0'
//当我们直接输出byte值,就是输出了对应的字符的码值
fmt.Println("c1=",c1)
fmt.Println("c2=",c2)
//如果我们希望输出对应的字符,需要使用格式化输出
fmt.Printf("c1=%c c2=%c\n",c1,c2)
//var c3 byte = '北' //overflow溢出
var c3 int = '北'
fmt.Printf("c3=%c",c3)
}
输出
c1= 97
c2= 48
c1=a c2=0
c3=北
- 如果我们保存的字符在ASCII表的,比如[0-1,a-z,A-z...]直接可以保存到byte
- 如果我们保存的字符对应的码值大于255,这时我们可以考虑使用int类型保存
- 如果我们需要按照字符的方式输出,这时我们需要格式化输出,即
fmt.Printf("%c",c1)
字符类型使用细节
- 字符常量是用单引号(' ')括起来的单个字符。例如
var c1 byte = 'a'
var c2 int = '中'
var c3 byte = '9'
- go中允许使用转义字符'\'来将其后的字符转变为特殊字符型常量。例如
var c3 char = '\n' //'\n'表示换行符
- go语言的字符使用UTF-8编码,英文字母一个字节,汉字三个字节
- 在go中,字符的本质是一个整数,直接输出时,时该字符对应的UTF-8编码的码值
- 可以直接给某一个变量敷一个数字,然后按格式化输出时%c,会输出该数字对应的unicode字符
- 字符类型可以进行运算,相当于一个整数,因为他都对应有Unicode码
字符类型本质探讨
-
字符型存储到计算机中,需要将字符对应的码值(整数)找出来
存储:字符-->对应码值-->二进制-->存储
读取:二进制-->码值-->字符-->读取
-
字符和码值的对应关系是通过字符编码表决定的(是规定好的)
-
go语言的编码都统一成了utf-8,和其他编程语言来说,非常方便,很统一