GO语言的运算符

运算符

GO语言和其他语言一样,也有运算符这么一说,像算数运算符啦逻辑运算符啦之类的GO语言都有,如果你有着超级活跃的思维,并且还有勇气进行大胆的尝试你的想法,你就会发现这运算符还是很有趣的

壹:算数运算符

运算符 +、-、*、/、%、++、–。

package main
import "fmt"

var a=60
var b=3
func main() {
	Z1 := 0
	Z1 = a+b
	fmt.Println(Z1)
	Z2 := 0
	Z2 = a-b
	fmt.Println(Z2)
	Z3 := 0
	Z3 = a*b
	fmt.Println(Z3)
	Z4 := 0
	Z4 = a/b
	fmt.Println(Z4)
	Z5 := 0
	Z5 = a%b
	fmt.Println(Z5)
	a++
	fmt.Println(a)
	b--
	fmt.Println(b)
}

这块挺简单的,就是加减乘除余数的运算,不过在自增和自减这里要注意一下,GO语言只支持“a++”而不支持“++a”并且,自增和自减操作只可以当成一个语句来使用,不可以被赋值给其他变量使用。也就是不可把它放在一个等号右边

例:
a++        //正确
s := a++   //错误

贰:关系运算符

运算符==、!=、>、<、>=、<=。

package main
import "fmt"

var a=60
var b=3
func main() {
	fmt.Println(a==b)
	fmt.Println(a!=b)
	fmt.Println(a>b)
	fmt.Println(a<b)
	fmt.Println(a>=b)
	fmt.Println(a<=b)
}
==:俩边的值是否相等	  (相等True)(不等False)
!=:俩边的值是否不等	  (不等True)(相等False)
> : 左边是否大于右边	  (是True)  (否False)
< : 左边是否小于右边	  (是True)  (否False)
>=:左边是否大于等于右边(是True)  (否False)
<=:左边是否小于等于右边(是True)  (否False)

叁:逻辑运算符

运算符&&、||、!。

package main
import "fmt"

var a=60
var b=3
func main() {
	fmt.Println((a>b)&&(a<b))
	fmt.Println((a>b)||(a>=b))	
	fmt.Println(!(a>b))
}

从现在开始,就大量的需要你的逻辑思维了

&&:and运算符,如果&&俩边的操作都为True,那么结果为True,反之为Fals
||:or 运算符,如果||俩边操作之一为True,那么结果为True,反之为Fals
!:not运算符,如果!后的操作结果为True,那么结果为False,反之为True
注:这里的操作为布尔类型的值,而非int类型!

肆:位运算符

运算符&、|、^ 、<<、>>、&^。

package main
import "fmt"

var a=60
var b=3
func main() {
//前提是先得有Z6
	Z6 := 0
//运算符表达式
	Z6 = a&b
//调用Z6
	fmt.Println(Z6)
	Z7 := 0
	Z7 = a|b
	fmt.Println(Z7)
	Z8 := 0
	Z8 = a^b
	fmt.Println(Z8)
	Z9 := 0
	Z9 = a<<b
	fmt.Println(Z9)
	Z10 := 0
	Z10 = a>>b
	fmt.Println(Z10)
	Z11 := 0
	Z11 = a&^b
	fmt.Println(Z11)
}

这一部分是最绕的,也是最难理解的,当时我花了好半天才走出来:

& :“与”,我将它转换为二进制理解,a与b俩个数都转换为二进制,各个数位一一向对,相同的保留,不同的归0,最后得出的二进制转换回来得出的数字就是最终的答案。
| :“异”,我还将他转换为二进制来理解,同上,ab转换为二进制,一一对应,假设0为假数,1为真数,真假相较,取真数,一一对较后得出的二进制转换回来得出的数为最终结果。
^ :“或”,这个恰恰与上一个相反,这个是真假相较,相同为假,不同为真。
>>:这个相对于前三个来说简单了不少,一样,转换为二进制理解,讲其中的1,整体向右移,想移几位,后面就跟几。
<<:这个和上一个差不多,只是这个向左移。
&^:依然转换为二进制,运算符右边与左边不同的保留,相同的清零。

伍:赋值运算符

运算符=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=。

package main
import "fmt"

var a=60
var b=3
func main() {
	Z12 := 0
	Z12 = b+a
	fmt.Println(Z12)
	Z13 := 88
	Z13 += a
	fmt.Println(Z13)
	Z14 := 88
	Z14 -= b
	fmt.Println(Z14)
	Z15 := 88
	Z15 *= a
	fmt.Println(Z15)
	Z16 := 88
	Z16 /= b
	fmt.Println(Z16)
	Z17 := 88
	Z17 %= a
	fmt.Println(Z17)
	Z18 := 88
	Z18 <<= b
	fmt.Println(Z18)
	Z19 := 88
	Z19 >>= b
	fmt.Println(Z19)
	Z20 := 88
	Z20 &= a
	fmt.Println(Z20)
	Z21 := 88
	Z21 ^= a
	fmt.Println(Z21)
	Z22 := 88
	Z22 |= a
	fmt.Println(Z22)
}

这个部分就简单了,不过有的也要转换为二进制来计算

=  :这是个最简单的赋值运算符,把右边的值赋给左边
+= : 先相加再赋值,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<<=a(c=c<<a)
>>=:先右移再赋值,c>>=a(c=c>>a)
&= :先与再赋值,  c &=a(c=c &a)
^= :先异再赋值,  c ^=a(c=c ^a)
|= :先或再赋值,  c |=a(c=c |a)

陆:运算符的优先级

运算符也是有优先顺序的,优先等级越高,越先算,在以前,学校里教的是先算加减,后算乘除,有括号时先算括号

优先级别  :5
优先运算符:*, / ,%, <<, >>, &, &^。
优先级别  :4
优先运算符:+, -, |, ^。
优先级别  :3
优先运算符:!=, <, <= ,>, >=,  ==。
优先级别  :2
优先运算符:&&。
优先级别  :1
优先运算符:||。
当然你也可以给某段运算加上括号来提升优先级,加括号一系列的和数学一样。
还有就是自增和自减,因为在GO语言这里,自增和自减被看作为语句,所以并不存在优先级。

emmmm……,前段时间在网上看到这么一条吐槽,大致如下:

程序员利用编程语言来实现数位的运算太麻烦了,拿个计算机多好啊,算个加减乘除都要敲半天代码。
(我感觉这条吐槽太“可爱”了)

运算符这块就这样了,最主要的就是多练,死记硬背记忆不深刻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值