一、运算符
1、+
:加法。
var a, b = 1, 2
fmt.Println(a+b)
结果:3
2、-
:减法。
var a, b = 1, 2
fmt.Println(a-b)
结果:-1
3、*
:乘法。
var a, b = 1, 2
fmt.Println(a*b)
结果:2
4、/
:除法。
整数除整数:会截断小数部分保留整数部分。
除数与被除数只要其中一个为浮点数,结果也是浮点数。
var a, b = 1, 2
fmt.Println(a/b)
结果:0
var a, b = 1.0, 2
fmt.Println(a/b)
结果:0.5
5、%
:余数,取模运算。
var a, b = 1, 2
fmt.Println(a%b)
结果:1
6、++
:自增,即自身加1。
var a = 1
fmt.Println(a++)
结果:2
7、--
:自减,即自身减1。
var a = 1
fmt.Println(a--)
结果:0
8、==
和!=
:相等和不等。
var a, b = 1, 2
fmt.Println(a==b)
结果:false
var a, b = 1, 1
fmt.Println(a==b)
结果:true
var a, b = 1, 2
fmt.Println(a!=b)
结果:true
var a, b = 1, 1
fmt.Println(a!=b)
结果:false
8、&&
逻辑运算符:与
var a, b = true, false
fmt.Println(a && b)
结果:false
解释:a, b中所有为true结果即为true,a, b中任一为false结果即为false。
9、||
逻辑运算符:或
var a, b = true, false
fmt.Println(a || b)
结果:true
解释:a, b中任一为true结果即为true,a, b中所有为false结果即为false。
10、!
逻辑运算符:否
var a = true
fmt.Println(!a)
结果:false
解释:a为true,否a即为false。
11、位运算符
对整数在内存中的二进制位进行操作。
11.1、&
:与运算。类似于第8点:逻辑运算符与。p, q中所有为1结果即为1,p, q中任一为0结果即为0。
11.2、|
:或运算。类似于第9点:逻辑运算符或。p, q中任一为1结果即为1,p, q中所有为0结果即为0。
11.3、^
:异或运算。p, q两者值不一样才为1,相同即为0。
A = 0011 1100
B = 0000 1101
A & B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
其中,A是十进制数60的二进制,B是十进制数13的二进制。
var A = 60
var B = 13
fmt.Printin(A&B)
结果:12
11.4、<<
左移运算符
左移运算符<<
是双目运算符。左移n位就是乘以2的n次方。其功能把<<
左边的运算数的各二进位全部左移若干位,由<<
右边的数指定移动的位数,高位丢弃,低位补0。
假设A为十进制数60,其二进制数即为 0011 1100,A << 2结果为 240,二进制为1111 0000。
解释:A << 2即A的二进制数往左移2位,原本前面两个扔掉,其他数左移,后面少掉的两位补上0。
11.5、>>
右移运算符
右移运算符>>
是双目运算符。右移n位就是除以2的n次方。其功能把>>
左边的运算数的各二进位全部右移若干位,由>>
右边的数指定移动的位数,低位丢弃,高位补0。
假设A为十进制数60,其二进制数即为 0011 1100,A >> 2结果为 15,二进制为0000 1111。
解释:A >> 2即A的二进制数往右移2位,原本后面两个扔掉,其他数右移,前面少掉的两位补上0。
12、赋值运算符
13、其他运算符&
、*
&
:
返回变量存储地址。
&a
:将给出变量的实际地址。
*
:
指针变量。
*a
:是一个指针变量。