算术运算符
运算符 |
描述 |
+ |
相加 |
- |
相减 |
* |
相乘 |
/ |
相除 |
% |
求余 |
++ |
自己啊 |
-- |
自减 |
package main
import "fmt"
func main() {
a := 10
b := 3
fmt.Println(a + b) //13
fmt.Println(a - b) //7
fmt.Println(a * b) //30
fmt.Println(a / b) //3
fmt.Println(a % b) //1
a++
fmt.Println(a) //11
b--
fmt.Println(b) //2
}
关系运算符
运算符 |
描述 |
== |
检查两个值是否相等,如果相等返回true否则返回false |
!= |
检查两个值是否不相等,如果不相等则返回true否则返回true |
> |
检查左边值是否大于右边值,如果是则返回true否则返回false |
< |
检查左边值是否小于右边值,如果是则返回true否则返回false |
>= |
检查左边值是否大于等于右边值,如果是返回 true 否则返回 false |
<= |
检查左边值是否小于等于右边值,如果是返回 true 否则返回 false |
package main
import "fmt"
func main() {
a := 10
b := 3
fmt.Println(a > b) //true
fmt.Println(a < b) //false
fmt.Println(a == b) //false
fmt.Println(a != b) //true
fmt.Println(a >= b) //true
fmt.Println(a <= b) //false
}
逻辑运算符
运算符 |
描述 |
&& |
逻辑 AND 运算符。 如果两边的操作数都是 true,则条件 true,否则为 false |
|| |
逻辑 OR 运算符。 如果两边的操作数有一个 true,则条件 true,否则为 false |
! |
逻辑 NOT 运算符。 如果条件为 true,则逻辑 NOT 条件 false,否则为 true |
package main
import "fmt"
func main() {
age := 1
if age > 18 && age < 69 {
fmt.Println("上班去咯")
} else {
fmt.Println("写作业去了")
}
if age < 18 || age > 60{
fmt.Println("可以回家去玩儿")
}else{
fmt.Println("养家糊口")
}
if !(age > 18) {
fmt.Println("未成年人")
}
}
位运算符
运算符 |
描述 |
& |
按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与 |
| |
按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或 |
^ |
按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1 |
<< |
左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0 |
>> |
右移运算符">>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 |
package main
import "fmt"
func main() {
a := 2
b := 3
fmt.Printf("%b,%b\n", a, b) // 10 11
/*
10 10 10
11 11 11
& 10 | 11 ^ 01
2 3 1
*/
fmt.Println(a & b) // 2
fmt.Println(a | b) //3
fmt.Println(a ^ b) //1
fmt.Println(a << 3) // 2*2^3 16
fmt.Println(a >> 3) // 2/2^3 0
}
赋值运算符
运算符 |
描述 |
= |
简单的赋值运算符,将一个表达式的值赋给一个左值 |
+= |
相加后再赋值 |
-= |
相减后再赋值 |
*= |
相乘后再赋值 |
/= |
相除后再赋值 |
%= |
求余后再赋值 |
<<= |
左移后再赋值 |
>>= |
右移后再赋值 |
&= |
按位与后再赋值 |
|= |
按位或后再赋值 |
^= |
按位非后再赋值 |
package main
import "fmt"
func main() {
a := 10
fmt.Println(a) //10
a = 100
fmt.Println(a) //100
a += 1 //建议使用 a++
fmt.Println(a) //101
a -= 1 //建议使用 a--
fmt.Println(a) // 100
a *= 2
fmt.Println(a) //200
a /= 2
fmt.Println(a) //100
}
其他运算符
运算符 |
描述 |
& |
返回变量存储的地址 |
* |
指针变量 |
package main
import "fmt"
func main() {
a := 10
fmt.Println(&a) //0xc0000100b0 变量的地址
fmt.Println(*&a) //10 执行形变量
}
运算符的优先级
优先级 |
运算符 |
5 |
* / % << >> & &^ |
4 |
+ - | ^ |
3 |
== != < <= > >= |
2 |
&& |
1 |
|| |