go基础——运算符

算数运算符

/*
	算术运算符:+,-,*,/,%,++,--
*/
a := 10
b := 3
sum := a + b //加减乘类似
fmt.Printf("%d + %d = %d\n", a, b, sum)
div := a / b //取商
mod := a % b //取余,取模
fmt.Printf("%d ÷ %d = 商%d,余%d\n", a, b, div, mod)

b++
fmt.Println(b)
b--
fmt.Println(b)

10 + 3 = 13
10 ÷ 3 = 商3,余1
4
3

关系运算符

/*
	关系运算符:>,<,>=,<=,==,!=
		关系运算结果总是bool类型:true,false
*/
res1 := a > b  //true
res2 := a < b  //false
res3 := a == b //false
res4 := a != b //true
fmt.Println(res1, res2, res3, res4)

true false false true

逻辑运算符

/*
	逻辑运算符:操作数必须是bool,运算结果也是bool
		逻辑与:&&
		逻辑或:||
		逻辑非:!
*/
f1 := true
f2 := false
f3 := false
r1 := f1 && f2       //false
r2 := f1 && f2 && f3 //false
fmt.Println(r1, r2)
r3 := f1 || f2       //true
r4 := f1 || f2 || f3 //true
r5 := f2 || f3       //false
fmt.Println(r3, r4, r5)
r6 := !f1 //false
fmt.Println(r6)

false false
true true false
false

位运算符

/*
	位运算符:将数值,转为二进制后,按位操作
		按位与:&
			对应位的值都为1才为1,有一个为0就为0
		按位或:|
			对应位的值都为0才位0,有一个位1就位1
		异或:^
			二元:a^b,对应位的值相同则为0,不同则为1
			一元:^a,按位取反,1->0, 0->1
		位清空:&^
			a &^ b, 对于b上的每位数值
				如果为0,则取a对应位上的数值
				如果位1,则取0
		按位左移:<<, a << b, 将a转为二进制,向左移动b位
		按位右移:>>, a >> b, 将a转为二进制,向右移动b位
*/
v1 := 60 //二进制:0011 1100
v2 := 13 //二进制:0000 1101
fmt.Printf("%d,%b\n", v1, v1)
fmt.Printf("%d,%b\n", v2, v2)
w1 := v1 & v2  //0000 1100
w2 := v1 | v2  //0011 1101
w3 := v1 ^ v2  //0011 0001
w4 := v1 &^ v2 //0011 0000
fmt.Printf("%d,%b\n", w1, w1)
fmt.Printf("%d,%b\n", w2, w2)
fmt.Printf("%d,%b\n", w3, w3)
fmt.Printf("%d,%b\n", w4, w4)
fmt.Printf("%d,%b\n", ^v1, ^v1)

w5 := v1 << 2 //1111 0000
fmt.Printf("%d,%b\n", w5, w5)

60,111100
13,1101
12,1100
61,111101
49,110001
48,110000
-61,-111101
240,11110000

赋值运算符

/*
	赋值运算符:
	=, +=, -=, *=, /=, %=, <=, >=, &=, |=, ^=
	=, 右侧数值赋值给左边变量
	+=, a += 2 相当于a = a + 2。
	-=, *=, /=, %= 与 += 类似
*/
posted @ 2021-09-10 12:12  沄持的学习记录  阅读(94)  评论(0编辑  收藏  举报