GO语言学习之路5


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 待做

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值