Go语言自学系列 | golang运算符
视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》
一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-CSDN博客
Go 语言内置的运算符有:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
算术运算符
运算符 | 描述 |
+ | 相加 |
- | 相减 |
* | 相乘 |
/ | 相除 |
% | 求余 |
注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符。
实例
package main
import "fmt"
func main() {
a := 100
b := 10
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++
fmt.Printf("a: %v\n", a)
b--
fmt.Printf("b: %v\n", b)
}
运行结果
[Running] go run "/Users/guoliang/Desktop/test.go"
(a + b): 110
(a - b): 90
(a * b): 1000
(a / b): 10
(a % b): 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
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))
}
运行结果
[Running] go run "/Users/guoliang/Desktop/test.go"
(a > b): false
(a < b): true
(a >= b): false
(a <= b): true
(a == b): false
(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
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))
}
运行结果
[Running] go run "/Users/guoliang/Desktop/tempCodeRunnerFile.go"
(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)
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))
}
运行结果
[Running] go run "/Users/guoliang/Desktop/test.go"
a: 100
b: 1000
(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)
}
运行结果
[Running] go run "/Users/guoliang/Desktop/test.go"
a: 100
a: 101
a: 100
a: 200
a: 100
相关文章
- Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 【转】
- go语言 nil一些注意的地方
- 【14】GO语言的接口类型
- go与c语言的互操作
- Atitit.go语言golang语言的新的特性 attilax总结
- 用Go语言写Android应用 (1) - 用Go写本地应用
- go语言使用xpath
- Go语言精进自学系列 | 使用Go语言原生编码思维来写Go代码
- Go语言自学系列 | golang标准库os包和环境相关的方法
- Go语言自学系列 | golang标准库io包
- Go语言自学系列 | golang继承
- Go语言自学系列 | golang通过接口实现OCP设计原则
- Go语言自学系列 | 第一个golang应用
- Go语言自学系列 | golang并发编程之WaitGroup实现同步
- Go语言自学系列 | golang匿名函数
- Go语言自学系列 | golang流程控制关键字break
- Go语言自学系列 | golang字符串
- Go语言自学系列 | go语言数据类型
- Go语言自学系列 | golang变量
- 387集Go语言核心编程培训视频教材整理 | VSCode插件安装
- 387集Go语言核心编程培训视频教材整理 | Golang的概述(二)
- go语言笔记——多值函数,本质上和nodejs的回调很像,不过nodejs是回调的第一个参数是err,而golang里是第二个!
- 深度解密Go语言之 pprof
- 我的Go+语言初体验——(2)IDE 详细安装教程
- go语言第五章(指针)