Go语言入门【2】运算符

算术运算符

假设a为3,b为2

运算符描述示例
+加法运算符a + b = 5
-减法运算符a - b = 1
*乘法运算符a * b = 6
/除法运算符a / b = 1
%取余运算符a % b = 1
++自增运算符a++ = 4
自减运算符b-- = 1

代码示例:

package main

import "fmt"

func main() {
	a := 3
	b := 2
	fmt.Println("a + b = ", a + b)
	fmt.Println("a - b = ", a - b)
	fmt.Println("a * b = ", a * b)
	fmt.Println("a / b = ", a / b)
	fmt.Println("a % b = ", a % b)
	a++
	b--
	fmt.Println("a ++ = ", a)
	fmt.Println("b -- = ", b)
}

运行结果:

运行结果

关系运算符

假设a为3,b为2

运算符描述示例
==判断两个值是否相等,如果相等返回true,否则返回falsea == b 为 false
!=判断两个值是否不相等,如果不相等返回true 否则返回falsea != b 为 true
>判断左边值是否大于右边值,如果是返回true 否则返回falsea > b 为 true
<判断左边值是否小于右边值,如果是返回true 否则返回falsea < b 为 false
>=判断左边值是否大于等于右边值,如果是返回true 否则返回falsea >= b 为 true
<=判断左边值是否小于等于右边值,如果是返回true 否则返回false。a <= b 为 false

代码示例:

package main

import "fmt"

func main() {
	a := 3
	b := 2
	fmt.Println("a == b : ", a == b)
	fmt.Println("a != b : ", a != b)
	fmt.Println("a > b : ", a > b)
	fmt.Println("a < b : ", a < b)
	fmt.Println("a >= b : ", a >= b)
	fmt.Println("a <= b : ", a <= b)
}

运行结果:

运行结果

逻辑运算符

假设a为true,b为false

运算符描述实例
&&逻辑与运算符,如果两边都为true,则为true,否则为falsea && b 为 false
||逻辑或运算符,如果任意有一边为true,则为true,否则为falsea || b 为 true
!逻辑非运算符,如果为true,返回false,如果为false,返回true!a 为 false, !b 为true

代码示例:

package main

import "fmt"

func main() {
	a := true
	b := false
	fmt.Println("a && b : ", a && b)
	fmt.Println("a || b : ", a || b)
	fmt.Println("!a : ", !a)
	fmt.Println("!b : ", !b)
}

运行结果:

运行结果

注意:逻辑运算符通常用于在if条件中做判断使用,并且逻辑运算符可以与关系运算符结合使用,例如 a > b && b > c,当a 大于 b,并且b 大于 c 时则为true,否则为false。

位运算符

位运算符是对整数的二进制进行计算

假设a为3,b为2

则a转为二进制为:0011,b的二进制为:0010

a & b的计算方式步骤:
第一步:将a和b转为二进制
a = 0011    b = 0010
第二步:将转为二进制的两个数进行按位与运算
按位与运算规则:对应的两位数都为1则结果为1,计算结果如下
a:   0011
b:   0010
&   ------
结果:0010
运算符描述实例
&按位与运算符,将两边的整数作为二进制进行按位与运算,两位都为1则为1a & b = 2,二进制为0010
|按位或运算符,将两边的整数作为二进制进行按位或运算,两位其中一个为1,则为1a | b = 3,二进制为0011
^异或运算符,将两边的整数作为二进制进行按位或运算,两位不相同则为1a ^ b = 1,二进制为0001
<<左移运算符,将左边的数转为二进制后向左位移右边指定的位数,左移n位就是乘以2的n次方a << 2 结果为12 ,二进制为 1100
>>右移运算符,将左边的数转为二进制后向右位移右边指定的位数,右移n位就是除以2的n次方a >> 2 结果为0 ,二进制为 0000

示例代码:

package main

import "fmt"

func main() {
	a := 3
	b := 2
	fmt.Println("a & b = ", a & b)
	fmt.Println("a | b = ", a | b)
	fmt.Println("a ^ b = ", a ^ b)
	fmt.Println("a << 2 = ", a << 2)
	fmt.Println("a >> 2 = ", a >> 2)
}

运行结果:

运行结果

赋值运算符

运算符描述实例
=赋值运算符,将右边表达式的值赋值给左边变量c = a + b => 表达式 a + b的结果赋值给变量c
+=相加后再赋值a += b => a = a + b
-=相减后再赋值a -= b => a = a - b
*=相乘后再赋值a *= b => a = a * b
/=相除后再赋值a /= b => a = a / b
%=求余后再赋值a %= b => a = a % b
<<=左移后赋值a <<= 2 => a = a << 2
>>=右移后赋值a >>= 2 => a = a >> 2
&=按位与后赋值a &= 2 => a = a & 2
^=按位异或后赋值a ^= 2 => a = a ^ 2
|=按位或后赋值a |= 2 => a = a | 2

代码示例:

package main

import "fmt"

func main() {
	a := 3
	b := 2
	var c int
	c = a + b
	fmt.Println("c = ", c)
	a += b
	fmt.Println("a = ", a)
	a -= b
	fmt.Println("a = ", a)
	a *= b
	fmt.Println("a = ", a)
	a /= b
	fmt.Println("a = ", a)
}

运行结果:

运行结果

运算符优先级

由上到下代表优先级从高到低,相同优先级的运算符在计算的过程中按照从左往右依次计算,同时还可以临时使用小括号提高优先级。

优先级运算符
5* / % << >> & &^
4+ - | ^
3== != < <= > >=
2&&
1||

代码示例:

package main

import "fmt"

func main() {
	a := 20
	b := 10
	c := 15
	d := 5
	fmt.Println("(a + b) * c / d = ", ( a + b ) * c / d)
	fmt.Println("((a + b) * c) / d = ", (( a + b) * c) / d)
	fmt.Println("(a + b) * (c / d) = ", (a + b) * (c / d))
	fmt.Println("a + (b * c) / d = ", a + (b * c) / d)
}

运行结果:

运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeJR

如果觉得有用请赏一个呗!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值