假设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 这种写法,Go语言遵循更严格的语法规则,不允许在变量名之前直接使用++或–。如果你想增加或减少一个变量的值,必须使用赋值运算符(如+=或-=)或者是普通的加法或减法运算符。可以写成a = a + 1或者a += 1。
操作符 | 检查两个值是否相等 | 示例结果 |
---|---|---|
== | 检查两个值是否相等,如果相等返回 True,否则返回 False。 | False |
!= | 检查两个值是否不相等,如果不相等返回 True,否则返回 False。 | True |
> | 检查左边值是否大于右边值,如果左边值大于右边值返回 True,否则返回 False。 | False |
< | 检查左边值是否小于右边值,如果左边值小于右边值返回 True,否则返回 False。 | True |
>= | 检查左边值是否大于或等于右边值,如果左边值大于或等于右边值返回 True,否则返回 False。 | False |
<= | 检查左边值是否小于或等于右边值,如果左边值小于或等于右边值返回 True,否则返回 False。 | True |
这些比较简单,拎一个讲讲:
⽤ == ⽐较数组
package main
import "fmt"
func main() {
array1 := [3]int{1, 2, 3}
array2 := [3]int{1, 2, 3}
array3 := [3]int{4, 5, 6}
array4 := [3]int{4, 5, '6'}
fmt.Println(array1 == array2) // 输出: true
fmt.Println(array1 == array3) // 输出: false
fmt.Println(array3 == array4) // 输出: false
}
运算符 | 描述 | 实例 |
---|---|---|
&& | 逻辑 AND 运算符。如果两边的操作数都是 True,则条件 True,否则为 False。 | (A && B) 为 False |
|| | 逻辑 OR 运算符 。如果两边的操作数有⼀个 True,则条件 True,否则为 False。 | (A || B) 为 True |
! | 逻辑 NOT 运算符 。如果条件为 True,则逻辑 NOT 条件 False,否则为 True。 | !(A && B) 为 True |
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符"&"是双⽬运算符。 其功能是参与运算的两数各对应的⼆进位相与。 | (A & B) 结果为 12, ⼆进制为 0000 1100 |
| | 按位或运算符"|"是双⽬运算符。 其功能是参与运算的两数各对应的⼆进位相或。 | (A | B) 结果为 61, ⼆进制为 0011 1101 |
^ | 按位异或运算符"^"是双⽬运算符。 其功能是参与运算的两数各对应的⼆进位相异或,当两对应的⼆进位相异时,结果为1。 | (A ^ B) 结果为 49, ⼆进制为 0011 0001 |
<< | 左移运算符”<<“是双⽬运算符。左移 n 位就是乘以 2 的 n 次⽅。 其功能把”<<“左边的运算数的各⼆进位全部左移若⼲位,由”<<"右边的数指定移动的位数,高位丢弃,低位补0。 | A << 2 结果为 240 ,⼆进制为 1111 0000 |
>> | 右移运算符”>>“是双⽬运算符。右移 n 位就是除以 2 的 n 次⽅。 其功能是把”>>“左边的运算数的各⼆进位全部右移若⼲位,”>>"右边的数指定移动的位数。 | A >> 2 结果为 15 ,⼆进制为 0000 1111 |
与其他主要编程语⾔的差异
&^ 按位置零
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, 3, 2, 4}
// c := [...]int{1, 2, 3, 4, 5}
d := [...]int{1, 2, 3, 4}
t.Log(a == b)
//t.Log(a == c)
t.Log(a == d)
}
func TestBitClear(t *testing.T) {
a := 7 //0111
a = a &^ Readable
a = a &^ Executable
t.Log(a&Readable == Readable, a&Writable == Writable, a&Executable == Executable)
}
可能这里会对十进制数转二进制数有疑惑,举个例子:
将一个十进制数转换为二进制数,可以使用以下方法:
- 将十进制数除以 2,得到商和余数。
- 将商再次除以 2,得到新的商和余数。
- 不断重复上述步骤,直到商为 0。
- 将每一步的余数从低位到高位依次排列,得到二进制表示。
下面是将十进制数 61 转换为二进制数的步骤:
- 61 ÷ 2 = 30 余 1
- 30 ÷ 2 = 15 余 0
- 15 ÷ 2 = 7 余 1
- 7 ÷ 2 = 3 余 1
- 3 ÷ 2 = 1 余 1
- 1 ÷ 2 = 0 余 1
将每一步的余数从低位到高位依次排列,得到 61 的二进制表示为 0011 1101或111101。
学习Go语言主要是多练,多找些代码段写写,不懂可以私聊咨询。
欢迎关注云尔Websites CSDN博客