2021/12/29
p70
1、进制不用多讲
2、原码、反码、补码(这里需要继续深入了解*****************标记)
===对于有符号的而言
(1)二进制的最高位是符号位:0表示整数, 1表示负数
1 ==》 0000 0001 -1 ==》1000 0001
(2)正数的原码、反码、补码都是一样的
(3)负数的反码 = 它的原码符号位不变,其他位取反
(4)负数的补码 = 它的反码+1
1 ==》 原码 0000 0001 反码 0000 0001 补码 0000 0001
-1 ==》 原码 1000 0001 反码 1111 1110 补码 1111 1111
(5) 0的反码,补码都是0
(6) 在计算机运算的时候,都是以补码的方式来运算的
-2 ^ 2
-1的原码 1000 0010 =》反码 1111 1101 =》 补码 1111 1110
-2的补码 0000 0010
结果为 1111 1100 (补码) ===》 原码
1111 1100 =》 反码 1111 1011 =》 原码 1000 0100
3、 >> << 右移和左移运算符:
右移运算符: 低位溢出,符号位不变,并用符号位补溢出高位
左移运算符: 符号位不变,低位补0
a := 1 >> 2 //0000 0001 => 0000 0000 = 0
b := 1 << 2 //0000 0001 => 0000 0100 = 4
4、顺序控制、分支控制、循环控制
golang中条件表达式后代码块 {} 必须有。即使只有一行语句。(不同其他语言)。没有会报错
单分支:
if age > 18 {
fmt.Println(" 18 ")
}
golang支持在if语句中直接定义一个变量,比如
if age := 20; age > 18 {
fmt.Println(" 18 ")
}
双分支:
if age > 18{
fmt.Println(" 18 ")
} else { //这里的else不能换行,否则报错,必须放一行
fmt.Println(" 20 ")
}
!!!error demo start:
if age > 18{
fmt.Println(" 18 ")
}
else { //这里的else不能换行,否则报错,必须放一行
fmt.Println(" 20 ")
}
!!!error demo end
================p82 联系待做
================p83 待做
================p84 待做
================p85 待做
5、golang中if后必须的条件表达式,不能赋值
6、switch语句
(1)匹配项后面不用带break 默认的有break
(2)case后的表达式可以有多个,如果有多个,使用 逗号 间隔
(3)case后的表达式如果是常量值(字面量),则要求不能重复
(4)switch是表达式也是可以的,包括函数
(5)switch得数据类型要和case的数据类型相同,否则报错
(6)switch后也可以不带表达式,类似if-else分支的作用
*****demo1:
var age int = 10
switch {
case age == 10:
fmt.Println(" 10 ")
case age == 20:
fmt.Println(" 20 ")
default:
fmt.Println(" 30 ")
}
*****demo2:
switch age := 10;{
case age == 10:
fmt.Println(" 10 ")
case age == 20:
fmt.Println(" 20 ")
default:
fmt.Println(" 30 ")
}
(7)switch 穿透 fallthrough
var age int = 10
switch {
case age == 10:
fmt.Println(" 10 ")
fallthrough //默认穿透一层,会直接执行下一层代码块。 输出:10 , 20
case age == 20:
fmt.Println(" 20 ")
default:
fmt.Println(" 30 ")
}
(8)switch语句还可以用于type-switch来判断某个interface变量中实际指向的变量类型
var age = 10
switch i := age.(type){
case int == 10:
fmt.Println(" 10 ")
fallthrough //默认穿透一层,会直接执行下一层代码块。 输出:10 , 20
case float32 == 20:
fmt.Println(" 20 ")
default:
fmt.Println(" 30 ")
}
================p89 待做