2.6、Golang 运算符
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
算术运算符
运算符 | 描述 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
++
和 --
是单独的语句,并不是运算符
示例
go
package main
import "fmt"
func main() {
a := 2
b := 5
r := a + b
fmt.Printf("r: %v\n", r)
// r: 7
r = b - a
fmt.Printf("r: %v\n", r)
// r: 3
r = a * b
fmt.Printf("r: %v\n", r)
// r: 10
r = b / a
fmt.Printf("r: %v\n", r)
// r: 2
r = b % a
fmt.Printf("r: %v\n", r)
// r: 1
a++
fmt.Printf("a: %v\n", a)
// a: 3
a--
fmt.Printf("a: %v\n", a)
// a: 2
}
关系运算符
运算符 | 描述 |
---|---|
== | 相等 |
!= | 不相等 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
示例
go
package main
import (
"fmt"
)
func main() {
a := 1
b := 2
fmt.Printf("%v\n", a == b)
// false
fmt.Printf("%v\n", a > b)
// false
fmt.Printf("%v\n", a >= b)
// false
fmt.Printf("%v\n", a < b)
// true
fmt.Printf("%v\n", a <= b)
// true
fmt.Printf("%v\n", a != b)
// true
}
逻辑运算符
运算符 | 描述 |
---|---|
&& | 逻辑与 |
|| | 逻辑或 |
! | 逻辑非 |
示例
go
package main
import (
"fmt"
)
func main() {
a := true
b := false
fmt.Printf("%v\n", a && b)
// false
fmt.Printf("%v\n", a || b)
// true
fmt.Printf("%v\n", !a)
// false
}
位运算符
运算符 | 描述 |
---|---|
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
<< | 左移 |
>> | 右移 |
示例
go
package main
import (
"fmt"
)
func main() {
a := 4
b := 8
fmt.Printf("a: %b\n", a)
// a: 100
fmt.Printf("b: %b\n", b)
// b: 1000
r := a & b
fmt.Printf("r: %v\n", r)
// r: 0
r = a | b
fmt.Printf("r: %v\n", r)
// r: 12
r = a ^ b
fmt.Printf("r: %v\n", r)
// r: 12
r = a << 2
fmt.Printf("r: %v\n", r)
// r: 16
r = a >> 2
fmt.Printf("r: %v\n", r)
// r: 1
}
赋值运算符
运算符 | 描述 |
---|---|
= | 赋值(右边的值赋值给左边变量) |
+= | 相加后赋值 |
-= | 相减后赋值 |
*= | 相乘后赋值 |
/= | 相除后赋值 |
%= | 取余后赋值 |
<<= | 左移后赋值 |
>>= | 右移后赋值 |
&= | 按位与后赋值 |
|= | 按位或后赋值 |
^= | 按位异或后赋值 |
示例
go
package main
import (
"fmt"
)
func main() {
a := 1
a += 1 // 等价于 a = a + 1
fmt.Printf("a: %v\n", a)
// a: 2
}