
Go 运算符
算术运算符
当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)
比较运算符
运算符 | 描述 | 实例 |
---|---|---|
== | 检查两个值是否相等,如果相等返回 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 |
用 == 比较数据
比较规则
- 相同位数且含有相同个数的数组才可以比较
- 每个元素都相同的才相等
示例
创建一个
operator_test.go
文件
数组代码示例
package operator_test
import "testing"
func TestCompareArray(t *testing.T) {
a := [...]int{1, 2, 3, 4}
b := [...]int{1, 2, 4, 3}
//c := [...]int{1, 2, 3, 4, 5}
d := [...]int{1, 2, 3, 4}
t.Log(a == b)
//首先呢,我们可以看见a与c编译错误,是因为它们对长度不同所导致的
//t.Log(a == c)
t.Log(a == d)
}
运行结果
逻辑运算符
运算符 | 描述 | 实例 |
---|---|---|
&& | 逻辑 And 运算符。如果两边都为True,则条件为True,否则条件为 False | (A && B)为 False |
|| | 逻辑 Or 运算符。如果两边一边为True,则条件为True,否则条件为 False | (A ||B)为 True |
! | 逻辑 Not 运算符。如果条件为True,则逻辑 Not 结果为False,否则为 False | !(A && B)为 True |
位运算符
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符”&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。 | A为14,B为13时,(A & B)结果为 12,二进制为 0000 1100 |
| | 按位或运算符”|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。 | A为52,B为9时,(A | B)结果为61,二进制为 0011 1101 |
^ | 按位异或运算符”^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进制位相异或时,结果取相反值。 | (A ^ B)结果为49,二进制为 0011 0001 |
<< | 左移运算符”<<”是双目运算符。左移n位就是乘以2的n次方。其功能把”<<”左边的运算数的各二进位左移若干位,由”<<”右边的数指定移动的位数,高位丢弃,低位补 | 当A为60,A << 2 结果为240,二进制为 1111 0000 |
>> | 右移运算符”>>”是双目运算符。右移n位就是乘以2的n次方。其功能把”>>”右边的运算数的各二进位右移若干位,由”>>”左边的数指定移动的位数。 | 当A为60,A >> 2 结果为15,二进制为 0000 1111 |
与其他主要编程语言的主要差异 &^ 按位置0
1 &^ 0 -- 1
1 &^ 1 -- 0
0 &^ 1 -- 0
0 &^ 0 -- 0
示例
代码示例
package operator_test
import "testing"
const (
Readable = 1 << iota
Writable
Executable
)
func TestCompareArray(t *testing.T) {
a := [...]int{1, 2, 3, 4}
b := [...]int{1, 2, 4, 3}
//c := [...]int{1, 2, 3, 4, 5}
d := [...]int{1, 2, 3, 4}
t.Log(a == b)
//首先呢,我们可以看见a与c编译错误,是因为它们对长度不同所导致的
//t.Log(a == c)
t.Log(a == d)
}
func TestBitClear(t *testing.T) {
a := 7 //0111
a = a &^ Readable
t.Log(a&Readable == Readable, a&Writable == Writable, a&Executable == Executable)
}
运行结果
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
1
文章
873
粉丝
112
评论
163
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术