运算符
算数运算符
运算符 | 描述 |
---|---|
+ | 相加 |
– | 相减 |
* | 相乘 |
/ | 相除 |
% | 求余 |
在Go语言中, 自增 (
++
) 和 自减 ( --
) 算单独的语句,不属于运算符。package main
import "fmt"
func main() {
var A = 100
var B = 10
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)
}
输出结果:
关系运算符
运算符 | 描述 |
---|---|
== | 检查两个值是否相等,如果相等返回 True, 否则返回 False。 |
!= | 检查两个值是否不相等,如果不相等返回 True, 否则返回 False。 |
> | 检查左边值是否大于右边值,如果是返回 True, 否则返回 False。 |
>= | 检查左边值是否大于等于右边值,如果是返回 True ,否则返回 False。 |
< | 检查左边值是否小于右边值,如果是返回 True ,否则返回 False。 |
<= | 检查左边值是否小于等于右边值,如果是返回 True, 否则返回 False。 |
package main
import "fmt"
func main() {
var Bool bool //定义布尔值 Bool
var A = 10
var B = 100
var C = 10
Bool = A==B
fmt.Println("A == B: " , Bool) // false
Bool = A!=B
fmt.Println("A != B: " , Bool) //true
Bool = A > C
fmt.Println("A > C: " , Bool) //false
Bool = A < B
fmt.Println("A < B: " , Bool) //true
Bool = A <= B
fmt.Println("A <= B: " , Bool) //true
Bool = A >= C
fmt.Println("A >= C: " , Bool) //true
}
输出结果:
逻辑运算符
运算符 | 描述 |
---|---|
&& | 逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。 |
ll | 逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。 |
! | 逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True |
package main
import "fmt"
func main() {
var S bool
var A = true
var B = false
S = A && B
fmt.Println("A && B: " , S)
S = A || B
fmt.Println("A || B: " , S)
S = !A
fmt.Println("!A: " , S)
}
输出结果:
位运算符
运算符 | 描述 |
---|---|
& | 参与运算的两数各对应的二进位相与。(两位均为1才为1) |
l | 参与运算的两数各对应的二进位相或。(两位有一个为1就为1) |
^ | 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 (两位不一样则为1) |
<< | 左移n位就是乘以2的n次方。“a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。 |
>> | 右移n位就是除以2的n次方。“a>>b”是把a的各二进位全部右移b位。 |
位运算符的概念可以参考这篇教程来更好的理解: C 运算符
package main
import "fmt"
func main() {
var A = 15 //1111
var B = 10 // 1010
var C uint = 1 //1
Y := A & B
fmt.Println("A & B: " , Y) //1010 = 10
Y = A | B
fmt.Println("A | B: " , Y) //1111 = 5
Y = A ^ B
fmt.Println("A ^ B: " , Y) //0101 = 5
Y = A << C
fmt.Println("A << C: " , Y)//11110 = 30
Y = A >> C
fmt.Println("A >> C: " , Y)//0111 = 7
}
输出结果:
赋值运算符
运算符 | 描述 |
---|---|
= | 简单的赋值运算符,将一个表达式的值赋给一个左值 |
+= | 相加后再赋值 |
-= | 相减后再赋值 |
*= | 相乘后再赋值 |
/= | 相除后再赋值 |
%= | 求余后再赋值 |
<<= | 左移后赋值 |
>>= | 右移后赋值 |
&= | 按位与后赋值 |
l= | 按位或后赋值 |
^= | 按位异或后赋值 |
package main
import "fmt"
func main() {
var R = 20
fmt.Println("var R = 20")
R += 1
fmt.Println("R += 1: ",R) // R = R + 1
R -= 1
fmt.Println("R -= 1: ",R) // R = R - 1
fmt.Println("++++++++++++++++")
var A = 10
fmt.Println("var A = 10")
A *= 2
fmt.Println("A *= 2: ",A) // A = A * 2
A /= 4 //a = 20/4
fmt.Println("A /= 4: ",A) // A = A / 4
A %= 10 //5%10
fmt.Println("A %= 10: ",A)// A = A % 10
fmt.Println("++++++++++++++++")
var G = 15 //1111
fmt.Println("var G = 15")
G <<= 1
fmt.Println("G <<= 1: ",G) // 1111 ---> 11110 , 11110 = 30
G >>= 1
fmt.Println("G >>= 1: ",G) // 1111 ---> 01111 , 01111 = 15
fmt.Println("++++++++++++++++")
var E = 10 // 1010
E &= 10
fmt.Println("E &= 10: ",E) //1010 & 1010 ---> 1010 , 1010 = 10
E |= 15
fmt.Println("E |= 10: ",E) //1010 % 1111 ---> 1111 , 1111 = 15
E ^= 10
fmt.Println("E ^= 10: ",E) //1010 ^ 1010 ---> 0101 , 0101 = 5
}
输出结果: