当前位置:网站首页>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
边栏推荐
- Projects and dependencies in ABP learning solutions
- jdbc-连接池
- Minio error correction code, construction and startup of distributed Minio cluster
- Understanding of C manualresetevent class
- Tidb single machine simulation deployment production environment cluster (closed pit practice, personal test is effective)
- C# ManualResetEvent 类的理解
- Linux closes the redis process SYSTEMd+
- TIDB数据库特性总结
- Recueillir des trésors dans le palais souterrain (recherche de mémoire profonde)
- Timer based on LabVIEW
猜你喜欢

Top 10 Free 3D modeling software for beginners in 2022

C# ManualResetEvent 类的理解

Linux closes the redis process SYSTEMd+

Fixed height of the first column in El table dynamic header rendering

linux 关闭redis 进程 systemd+

TIDB数据库特性总结

uniapp树形层级选择器

SystemVerilog学习-08-随机约束和线程控制

DHT11 temperature and humidity sensor

【文件系统】如何在ubi之上运行squashfs
随机推荐
Minio error correction code, construction and startup of distributed Minio cluster
PLA不粘贴在床上:6个简单的解决方案
Infinite horizontal marble game
freeswitch拨打分机号
3D printer threading: five simple solutions
Retention rate of SQL required questions
ArcServer密码重置(账号不可以重置)
One of the characteristic agricultural products that make Tiantou village, Guankou Town, Xiamen into a "sweet" village is
让厦门灌口镇田头村变甜头村的特色农产品之一是蚂蚁新村
蚂蚁新村田头村变甜头村 让厦门灌口镇田头村变甜头村的特色农产品之一是
数据库er图组成要素
Oracle sequence + trigger
SystemVerilog学习-06-类的封装
Multi label lsml for essay learning records
让田头村变甜头村的特色农产品是仙景芋还是白菜
端口扫描工具对企业有什么帮助?
68 Cesium代码datasource加载czml
MySQL怎么存储emoji?
1034 Head of a Gang
Geoffrey Hinton: my 50 years of in-depth study and Research on mental skills