大家好!这是我参与「第五届青训营 」笔记创作活动的第5天。
我是一名在校大二的学生,很荣幸的参加本次青训营,所以我想把我在这次青训营的学习经历通过这次活动记录下来,和本次参加项目的小伙伴一起学习探讨,今天讲解的是go语言基础的第五节,加油!学习永无止境!💪💪💪
GO语言
5、Golang 中的运算符
5.1、Golang 内置的运算符
(1)、算术运算符
(2)、关系运算符
(3)、逻辑运算符
(4)、位运算符
(5)、赋值运算符
5.2、算数运算符
| 运算符 | 描述 |
|---|---|
| + | 相加 |
| - | 相减 |
| * | 相乘 |
| / | 相除 |
| % | 求余=被除数-(被除数/除数)*除数 |
fmt.Println(-10%3) -1;= -10 -(-10/3)*3
注意: ++(自增)和--(自减)在Go 语言中是单独的语句,并不是运算符。
(1)、在golang 中,++ 和-- 只能独立使用。错误写法如下:
var i int = 8
var a int
a = i++ //错误,i++只能独立使用
a = i-- //错误, i--只能独立使用
(2)、在golang 中没有前++ 错误写法如下:
var i int = 1
++i // 错误,在golang 没有前++
--i // 错误,在golang 没有前--
fmt.Println("i=", i)
(3)、++和--正确写法:
var i int = 1
i++
fmt.Println("i=", i)
3
5.3、关系运算符
| 运算符 | 描述 |
|---|---|
| == | 两个值是否相等,如果相等返回True 否则返回False。 |
| != | 两个值是否不相等,如果不相等返回True 否则返回False。 |
| 左边值是否大于右边值,如果是返回True 否则返回False。 | |
| >= | 左边值是否大于等于右边值,如果是返回True 否则返回False。 |
| < | 左边值是否小于右边值,如果是返回True 否则返回False。 |
| <= | 左边值是否小于等于右边值,如果是返回True 否则返回False。 |
5.4、逻辑运算符
| 运算符 | 描述 | ||
|---|---|---|---|
| && | 逻辑AND 运算符。如果两边的操作数都是True,则为True,否则为False。 | ||
| 逻辑OR 运算符。如果两边的操作数有一个True,则为True,否则为False。 | |||
| ! | 逻辑NOT 运算符。如果条件为True,则为False,否则为True。 |
5.5、赋值运算符
| 运算符 | 描述 |
|---|---|
| = | 赋值运算符,将一个表达式的值赋给一个左值 |
| += | 相加后再赋值 |
| -= | 相减后再赋值 |
| *= | 相乘后再赋值 |
| /= | 相除后再赋值 |
| %= | 求余后再赋值 |
5.6、位运算符(了解)
位运算符对整数在内存中的二进制位进行操作。
| 运算符 | 描述 | |
|---|---|---|
| & | 参与运算的两数各对应的二进位相与。(两位均为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() {
/*
& 两位均为1 才为1
| 两位有一个为1 就为1
^ 相异或两位不一样则为1
<< 左移n 位就是乘以2 的n 次方。“a<<b”是把a 的各二进位全部左移b 位,
高位丢弃,低位补0。
右移n 位就是除以2 的n 次方。
*/
var a int = 5 // 101
var b int = 2 // 010
fmt.Println("a&b=", a&b) // 000 值0
fmt.Println("a|b=", a|b) // 111 值7
fmt.Println("a^b=", a^b) // 111 值7
fmt.Println("5>>2=", a>>b) // 5 右移2 位1
fmt.Println("5<<2=", a<<b) // 5 左移2 位10100
fmt.Println("5<<1=", 5<<1) // 1010
fmt.Println("5>>1=", 5>>1) // 10
fmt.Println("7>>2=", 7>>2) // 1
}