算数运算符、关系运算符、逻辑运算符、位算符(内存操作)、赋值运算符、其他运算符(指针取地址数值)
算数运算符
设A=10 B=20
运算符 | 描述 | 实例 |
+ | 相加 | A+B=30 |
- | 相减 | A-B=-10 |
* | 相乘 | A*B=200 |
/ | 相除 | B/A=2 |
% | 求余 | B%A=0 |
++ | 自增 | A++ =11 |
-- | 自减 | A-- =9 |
package main import "fmt" func main() { var a int = 10 var b int = 3 //var c int // + - * / % ++ -- fmt.Println(a + b) fmt.Println(a - b) fmt.Println(a * b) fmt.Println(a % b) a++ fmt.Println(a) a-- fmt.Println(a) }
关系运算符
设A=10 B=20 关系运算符返回结果都是 bool值
运算符 | 描述 | 实例 |
== | 检查两个值是否相等,如果相等返回True否则返回False | A == B 为False |
!= | 检查两个值是否不相等,如果不相等返回True,否则返回False | A != B 为True |
> | 检查左边值是否大于右边值,如果是返回True,否则返回False | A > B 为False |
检查左边值是否小于右边值,如果是返回True,否则返回False | A < B 为True | |
>= | 检查左边值是否大于等于右边值,如果是返回True,否则返回False | A >= B 为False |
检查左边值是否小于等于右边值,如果是返回True,否则返回False | A |
package main import "fmt" func main() { var a int = 11 var b int = 10 fmt.Println(a == b) fmt.Println(a != b) fmt.Println(a > b) fmt.Println(a < b) fmt.Println(a >= b) fmt.Println(a <= b) //判断 if 如果 ... 结构 if a > b { fmt.Println(1) } else if a < b { fmt.Println(2) } else { fmt.Println(3) } }
逻辑运算符
设A为True 设B为False
运算符 | 描述 | 实例 |
&& | 逻辑AND运算符。如果两边的操作都是True,则条件True,否则为False | A && B 为False |
|| | 逻辑OR运算符,如果两边的操作数有一个True,则条件为True,否则为False | A || B 为True |
! | 逻辑NOT运算符。如果条件为True,则逻辑NOT条件False,否则为True | !(A && B) True |
package main import "fmt" func main() { var a bool = true var b bool = false //逻辑 && 与 两边条件都要满足才为真 其他情况为假 if a && b { fmt.Println(a && b) } fmt.Println(a && b) //false //逻辑或 || 其中一个满足则为真 两边都满足为真 其他情况为假 if a || b { fmt.Println(a || b) } fmt.Println(a || b) //True //逻辑非 否定 原来结果为真,结果就为假 原来结果为假,结果就为真 fmt.Println(!a) //false fmt.Println(!b) //True }
位算符
设A=60 B=13 位运算符是针对二进制的
运算符 | 描述 | 实例 |
& | 按位与运算符“&”是双目运算符。都是1结果为1,否则为0 | A&B结果为12,二进制位0000 1100 |
| | 按位或运算符“|”是双目运算符。都是0结果为0,否则是1 | A|B 结果为61 二进制 0011 1101 |
^ | 按位异或运算符“^”是双目运算符。不同则为1,相同为0 | A^B 结果为49 二进制 0011 0001 |
&^ | 位清空,a &^ b,对于b上的每个数值,如果为0,则取a对应位上的数值,如果为1,则取0 | A&^B结果为48 二进制 0011 0000 |
左移运算符“ | A | |
>> | 右移运算符“>>”是双目运算符。右移n位就是乘以2的n次方。其功能把“>>”左边的运算数的各二进位全部右移若干位,”>>“右边的数指定移动的位数 | A>>2 结果为15 二进制位0000 1111 |
package main import "fmt" func main() { //二进制 0 1 //位运算: 都是针对二进制的 0 false 1 true //& 我和你 1 1 结果才是1 //| 我或你 0 0 结果才是0 //^ 相同为0 不同为1 // &^ a &^ b 前后二进制对应,b为0取a对应的数值,b为1则取0 // >> 2 // << 2 //60 0011 1100 //13 0000 1101 //------------- //& 0000 1100 //| 0011 1101 //^ 0011 0001 var a uint = 60 var b uint = 13 //位运算 & var c uint = 0 c = a & b fmt.Printf("%d,二进制%b\n", c, c) //位运算 | c = a | b fmt.Printf("%d,二进制%b\n", c, c) //位运算 ^ c = a ^ b fmt.Printf("%d,二进制%b\n", c, c) //位运算符 << //60 0011 1100 // 1111 0000 c = a << 2 //向左移动2位 fmt.Printf("%d,二进制%b\n", c, c) //位运算符 >> //60 0011 1100 // 0000 1111 a = 60 c = a >> 2 //向右移动2位 fmt.Printf("%d,二进制%b\n", c, c) }
赋值运算符
运算符 | 描述 | 实例 |
= | 将一个表达式的值赋给左边 | C=A+B 表达式结果赋值给C |
+= | 相加后赋值 | C+= A 等于 C= C+A |
-= | 相减后赋值 | C-=A 等于 C=C-A |
*= | 相乘后赋值 | C*=A 等于 C=C*A |
/= | 相除后赋值 | C/=A 等于 C=C/A |
%= | 取余后赋值 | C%=A 等于 C=C%A |
左移赋值 | C | |
>>= | 右移赋值 | C>>=A 等于 C=C>>A |
&= | 按位与后赋值 | C&=A 等于 C=C&A |
^= | 按位异或后赋值 | C^=A 等于 C=C^A |
|= | 按位或后赋值 | C|=A 等于 C=C|A |
package main import "fmt" func main() { var a int = 21 var b int b += a //21 fmt.Println(b) }
其他运算符
运算符 | 描述 | 实例 |
& | 返回变量存储地址 | &a;将给出变量的实际地址 |
* | 指针变量 | *a;是一个指针变量 |