运算符

1.算术运算符

下表列出了所有Go语言的算术运算符. 假定A值为10, B值为20

运算符描述运算输出结果
+相加A + B30
-相减A - B-10
*相乘A * B200
/相除B / A2
%求余B % A0
++自增A++11
--自减A--9
package main

import "fmt"

func main() {
	var a int = 10
	var b int = 3

	//+ - * / % ++ --
	fmt.Println(a + b)
	fmt.Println(a - b)
	fmt.Println(a * b)
	fmt.Println(a % b)
	a++
	fmt.Println(a)
	a--
	fmt.Println(a)
}

2.关系运算符

下表列出了所有Go语言的关系运算符. 假定A值为10, B值为20.

运算符描述实例
==检查两个值是否相等, 如果相等返回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<=B)为true
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)
	
}

3.逻辑运算符

下表列出了所有Go语言的逻辑运算符. 假定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
	//逻辑与 && 与, 我与你, 我和你都要满足一个结果, 才执行 和、并且
	//a 和 b 都为真的时候, 结果为真, true, 只要有一个结果为假, 结果就为假
	// 都为真, 结果才为真, 否则就是假
	if a && b {
		fmt.Println(a && b)
	}
	fmt.Println(a && b)

	//逻辑 || 或, 我或者你,其中一个满足就ok
	// a||b只要有一个为真, 结果就是真, 只有全是false的时候,才会返回真
	fmt.Println(a || b)

	// 逻辑非 ! !a 取反 如果为真,结果就为假,取反
	fmt.Println(!a)
	fmt.Println(!b)
}

4.位运算符

Go语言支持的位运算符如下表所示, 假定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
<<左移运算符"<<"是双目运算符,左移n位就是乘以2的n次方. 其功能把"<<"左边的运算数的各二进制全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0A<<2 结果为240,二进制位1111 0000
>>右移运算符">>"是双目运算符,右移n位就是除以2的n次方,其功能是吧">>"左边的运算数各二进制位全部右移若干位,">>"右边的数指定移动的位数A>>2结果为15, 二进制为0000 1111

5.赋值运算符

下表列出了所有Go语言的赋值运算符

运算符描述实例
=简单的赋值运算符, 讲一个表达式的值赋给一个左值C=A+B将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<<=2等于C=C<<2
>>=右移后赋值C>>=2等于C=C>>2
&=按位与后赋值C&=2等于C=C&2
^=按位异或后赋值C^=2等于C=C^2
|=按位或后赋值C |= 2等于C=C|2

6.其他运算符

下表列出了Go语言的其他运算符

运算符描述实例
&返回变量存储地址&a;将给出变量的实际地址
*指针变量*a;是一个指针变量