GO基本数据类型
GO基本数据类型
整型
//按长度分
int8 int16 int32 int64
//按有无符号分
uint8 uint16 uint32 uint64
//提供了平台自动匹配长度的int类型和uint类型
int uint
//注意转换 只能位数少的往位数高的转,不然会出现数据丢失,报错
浮点型
//主要有两种
float32 float64
//可以相互转换,但是高精度向低精度转出现精度损失
布尔型
bool
//注意只有 true和false 不可与整型互相转换
字符串型
string
//字符串基于UTF-8实现
f :="Golanga编程"
//需要区分byte和rune byte一种是uint8类型,表明了ASCII码的一个字符。另外一种是rune类型,表明一个UTF-8字符,rune类型实际是一个int32,表示 Unicode 码
//len(f)=12因为一个中文占三个字节
//而utf8.RuneCountInString(f)是计算字符串的Unicode数量,为8个
字符串遍历
1.遍历每个 ASCII 字符
直接使用for
2.按Unicode 字符遍历字符串
使用 range
str := "快乐 everyday"
for _, s := range str{
fmt.Printf("unicode: %c %d\n", s,s)
}
for i:=0;i<len(str) ;i++ {
fmt.Printf("ascii: %c %d\n", str[i], str[i])
}
Unicode和ASCII的区别
Unicode是字符集。ASCⅡ也是一种字符集。
字符集为每一个字符分配一个惟一的ID,咱们使用到的全部字符在 Unicode字符集中都有惟一的一个ID对应,例如上面例子中的a在 Unicode与ASCII中的编码都是97。
“你“在 Unicode中的编码为20320,可是在不一样国家的字符集中,“你”的ID会不一样。而不管任何状况下, Unicode中的字符的ID都是不会变化的。
UTF-8是编码规则,将 Unicode中字符的ID以某种方式进行编码。UTF-8的是一种变长编码规则,从1到4个字节不等。
UTF-8编码规则
UTF-8 编码,它使用 1 - 4 个字节表示 Unicode 码,Unicode 码到 UTF-8 编码的转换如下:
0xxxxxxx runes 0−127 (ASCII)
110xxxxx 10xxxxxx 128−2047 ues <128 un (val used)
1110xxxx 10xxxxxx 10xxxxxx 2048−65535 ues <2048 un (val used)
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 65536−0x10ff f f (other values unus ed)
————————————————