0
点赞
收藏
分享

微信扫一扫

Go语言学习笔记(三)

先峰老师 2022-01-30 阅读 176

Go学习笔记(三)


1.值类型和引用类型

值类型:基本数据类型int系列,float系列,bool,string,数组和结构体struct。
引用类型:指针。slice切片,map,管道chan,interface等

值类型的特点:变量直接存储值,内存通常在栈中分配
引用类型:变量储存是一个地址,这个地址对应的空间才是真正的存储数据,内存通常在堆上分配。

2.字符串

字符串是不可变的字节序列。习惯上,文本字符串被解读成按UTF-8编码的codepoint码点。

内置的len函数返回字符串的字节数(并非文字符号的数目)。

子串生成操作s[i:j]产生一个新字符串,加号(+)运算符连接两个字符串而生成一个新字符串。

试图访问许可范围以外的字节,会触发宕机异常。

字符串字面量:使用“”,而原生的,则用反引号··,其中转义字符不起作用。

utf8.RuneCountInString, utf8.DecodeRuneInString

若遇到不合理字节,无论是显示调用utf8.DecodeRuneInString还是range循环,都会产生一个专门的Unicode字符‘\uFFFD’替换它,其输出通常是个黑色六角形,里面有个白色问号。

bytes,strings,strconv,unicode包对字符串操作很重要。

3.原码,反码,补码

  1. 原码
    原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:

[+1]原 = 0000 0001

[-1]原 = 1000 0001

第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:

[1111 1111 , 0111 1111]

[-127 , 127]

原码是人脑最容易理解和计算的表示方式.

  1. 反码
    反码的表示方法是:

正数的反码是其本身

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反

可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算.

  1. 补码
    补码的表示方法是:

正数的补码就是其本身

负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

[+1] = [00000001]原 = [00000001]反 = [00000001]补

[-1] = [10000001]原 = [11111110]反 = [11111111]补

对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值.

举报

相关推荐

0 条评论