当前位置:网站首页>10-golang运算符
10-golang运算符
2022-07-01 06:10:00 【咸蛋黄派】
Go 语言内置的运算符有:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
算术运算符
| 运算符 | 描述 |
|---|---|
| + | 相加 |
| - | 相减 |
| * | 相乘 |
| / | 相除 |
| % | 求余 |
注意:++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符。
实例
package main
import "fmt"
func main() {
a := 100
b := 10
// 当第一次声明该变量时,需要 := ;如果已经声明过变量,只需要 = 即可
x := a + b
fmt.Printf("x: %v\n", x)
x = a - b
fmt.Printf("x: %v\n", x)
x = a * b
fmt.Printf("x: %v\n", x)
x = a / b
fmt.Printf("x: %v\n", x)
x = a % b
fmt.Printf("x: %v\n", x)
// 变量进行自增和自减
a++
b--
fmt.Printf("a: %v\n", a)
fmt.Printf("b: %v\n", b)
}
输出结果
x: 110
x: 90
x: 1000
x: 10
x: 0
a: 101
b: 9
关系运算符
| 运算符 | 描述 |
|---|---|
| == | 检查两个值是否相等,如果相等返回 True 否则返回 False。 |
| != | 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 |
| > | 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 |
| >= | 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 |
| < | 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 |
| <= | 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 |
实例
package main
import "fmt"
func main() {
a := 1
b := 2
//提示以下输出参考此 (a > b).print! 写法,会自动补全
fmt.Printf("(a > b): %v\n", (a > b))
fmt.Printf("(a < b): %v\n", (a < b))
fmt.Printf("(a == b): %v\n", (a == b))
fmt.Printf("(a >= b): %v\n", (a >= b))
fmt.Printf("(a <= b): %v\n", (a <= b))
fmt.Printf("(a != b): %v\n", (a != b))
}
输出结果
(a > b): false
(a < b): true
(a == b): false
(a >= b): false
(a <= b): true
(a != b): true
逻辑运算符
| 运算符 | 描述 |
|---|---|
| && | 逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。 |
| || | 逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。 |
| ! | 逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True。 |
实例
package main
import "fmt"
func main() {
a := true
b := false
//提示以下输出参考此 (a && b).print! 写法,会自动补全
fmt.Printf("(a && b): %v\n", (a && b))
fmt.Printf("(a || b): %v\n", (a || b))
fmt.Printf("(!a): %v\n", (!a))
fmt.Printf("(!b): %v\n", (!b))
}
输出结果
(a && b): false
(a || b): true
(!a): false
(!b): true
位运算符
位运算符对整数在内存中的二进制位进行操作。
| 运算符 | 描述 |
|---|---|
| & | 参与运算的两数各对应的二进位相与。 (两位均为1才为1) |
| | | 参与运算的两数各对应的二进位相或。 (两位有一个为1就为1) |
| ^ | 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 (两位不一样则为1) |
| << | 左移n位就是乘以2的n次方。 “a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。 |
| >> | 右移n位就是除以2的n次方。 “a>>b”是把a的各二进位全部右移b位。 |
实例
package main
import "fmt"
func main() {
a := 4 // 二进制 100
fmt.Printf("a: %b\n", a)
b := 8 // 二进制 1000
fmt.Printf("b: %b\n", b)
// 此处为了让大家更加清晰,分别做了二进制的转换(%b、%v)
fmt.Printf("(a & b): %v, %b \n", (a & b), (a & b))
fmt.Printf("(a | b): %v, %b\n", (a | b), (a | b))
fmt.Printf("(a ^ b): %v, %b\n", (a ^ b), (a ^ b))
fmt.Printf("(a << 2): %v, %b\n", (a << 2), (a << 2))
fmt.Printf("(b >> 2): %v, %b\n", (b >> 2), (b >> 2))
}
输出结果
a: 100
b: 1000
(a & b): 0
(a & b): 0
(a & b): 0, 0
(a | b): 12, 1100
(a ^ b): 12, 1100
(a << 2): 16, 10000
(b >> 2): 2, 10
赋值运算符
| 运算符 | 描述 |
|---|---|
| = | 简单的赋值运算符,将一个表达式的值赋给一个左值 |
| += | 相加后再赋值 |
| -= | 相减后再赋值 |
| *= | 相乘后再赋值 |
| /= | 相除后再赋值 |
| %= | 求余后再赋值 |
| <<= | 左移后赋值 |
| >>= | 右移后赋值 |
| &= | 按位与后赋值 |
| |= | 按位或后赋值 |
| ^= | 按位异或后赋值 |
实例
package main
import "fmt"
func main() {
var a int
a = 100
fmt.Printf("a: %v\n", a)
a += 1 // a = a + 1
fmt.Printf("a: %v\n", a)
a -= 1 // a = a -1
fmt.Printf("a: %v\n", a)
a *= 2 // a = a * 2
fmt.Printf("a: %v\n", a)
a /= 2 // a = a / 2
fmt.Printf("a: %v\n", a)
}
输出结果
a: 100
a: 101
a: 100
a: 200
a: 100
边栏推荐
- golang panic recover自定义异常处理
- Differences between in and exists in MySQL
- Diffusion (multi-source search)
- SystemVerilog学习-08-随机约束和线程控制
- 【网络安全工具】USB控制软件有什么用
- PLA not pasted on the bed: 6 simple solutions
- 局域网监控软件有哪些功能
- FPGA - 7系列 FPGA内部结构之Clocking -02- 时钟布线资源
- Elements of database ER diagram
- Distributed lock implementation
猜你喜欢

ManageEngine卓豪助您符合ISO 20000标准(四)

69 cesium code datasource loading geojson

PLA不粘贴在床上:6个简单的解决方案

three.js小结

ONEFLOW source code parsing: automatic inference of operator signature

ArcServer密码重置(账号不可以重置)

LED lighting used in health lighting

数据库问题,如何优化Oracle SQL查询语句更快,效率更高

Thesis learning record essay multi label lift

Essay learning record essay multi label Global
随机推荐
SystemVerilog学习-06-类的封装
ForkJoin和Stream流测试
【自动化运维】自动化运维平台有什么用
SystemVerilog学习-08-随机约束和线程控制
扩散(多源广搜)
ArcServer密码重置(账号不可以重置)
FPGA - 7 Series FPGA internal structure clocking-01-clock Architecture Overview
highmap gejson数据格式转换脚本
What if the data in the cloud disk is harmonious?
B-树系列
JMM详解
SQL必会题之留存率
uniapp树形层级选择器
OpenGL es: (5) basic concepts of OpenGL, the process of OpenGL es generating pictures on the screen, and OpenGL pipeline
OpenGL es: (1) origin of OpenGL es (transfer)
图片服务器项目测试
Distributed lock implementation
Golang panic recover custom exception handling
69 Cesium代码datasource加载geojson
Multi label lsml for essay learning records