Go运算符

目录

一、算数运算符

二、比较运算符

1、用 == 比较数组

结论

三、逻辑运算符

 四、位运算符

1、与其它主流语言的差异

&^ 按位置零

效果

示例


一、算数运算符

若 A = 10; B = 20; 则:

运算符

描述

实例

+

相加

A + B 输出结果 30

-

相减

A - B 输出结果 -10

*

相乘

A * B 输出结果 200

/

相除

B / A 输出结果 2

%

求余

B % A 输出结果 0

++

⾃增

A++ 输出结果 11

--

⾃减

A-- 输出结果 9

注意: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

1、用 == 比较数组

package ch4

import "testing"

//数组比较
func TestCompareArray(t *testing.T) {
	a := [...]int{1, 2, 3, 4}
	b := [...]int{1, 2, 3, 4}
	c := [...]int{1, 2, 3, 5}
	d := [...]int{1, 2, 4, 3}

	//说明维数相同,每个元素也相当,数组才相等
	t.Log(a == b)	//true
	//维数相同,元素内容不同,数组不相等
	t.Log(a == c)	//false
	//维数相同,元素内容不同,数组不相等
	t.Log(a == d)	//false

	//还有一种情况,如果维数不同,或者数组元素个数不同,则会报编译错误,不能进行比较
}

结论

  • 相同维数且含有相同个数元素的数组才可以⽐较
  • 每个元素都相同的才相等

三、逻辑运算符

若 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

 四、位运算符

若 A = 60 , B = 13; 则:

运算符

描述

实例

&

按位与运算符"&"是双⽬运算符。 其功能是参与运算的两数 各对应的⼆进位相与。

A = 0011 1100

B = 0000 1101

(A & B) 等于 12

0000 1100

|

按位或运算符"|"是双⽬运算符。 其功能是参与运算的两数 各对应的⼆进位相或

A = 0011 1100

B = 0000 1101

(A | B) 等于 61

0011 1101

^

按位异或运算符"^"是双⽬运算符。 其功能是参与运算的两 数各对应的⼆进位相异或,当两对应的⼆进位相异时,结果为1,当两对应的⼆进位相同时,结果为0。

A = 0011 1100

B = 0000 1101

(A ^ B) 等于 49

0011 0001

<<

移运算符”<<"是双⽬运算符。左移 n 位就是乘以 2 的 n 次⽅。 其功能把"<<"左边的运算数的各⼆进位全部左移若 ⼲位,由"<<"右边的数指定移动的位数,⾼位丢弃,低位补0

A = 0011 1100

A << 2 等于 240 

1100 0000

>>

0。 右移运算符”>>"是双⽬运算符。右移 n 位就是除以 2 的 n 次⽅。 其功能是把">>"左边的运算数的各⼆进位全部右移 若⼲位,">>"右边的数指定移动的位数。

A = 0011 1100

A >> 2 等于 15

0000 1111

pqp & qp | qp ^ q
00000
01011
11110
10011

1、与其它主流语言的差异

&^ 按位置零

1 &^ 0 = 1
0 &^ 0 = 1

1 &^ 1 = 0
0 &^ 1 = 0

效果:

  • 当 &^ 边儿的数为 0 时,运算结果为左边儿的数是几就还是几
  • 当 &^边儿的数为 1 时,不管左边儿的数是几,运算后的结果都为 0

示例:

package ch4

import "testing"

const (
	Readable    = 1 << iota // 001
	Writable                //010
	Executable              //100
)

//按位清零
func TestBitClear(t *testing.T) {
	a := 7  //0111
	//将可读为清 0
	a = a &^ Readable

	t.Log(a) //0110
}

:这篇博文是我学习中的总结,如有转载请注明出处:https://blog.csdn.net/DaiChuanrong/article/details/117716805

上一篇go常量

下一篇Go循环、判断和switch

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值