开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 10 天,点击查看活动详情
1.算术运算符
| 运算符 | 术语 | 示例 | 结果 |
|---|---|---|---|
| + | 加 | 10 + 5 | 15 |
| - | 减 | 10 - 5 | 5 |
| * | 乘 | 10 * 5 | 50 |
| / | 除 | 10 / 5 | 2 |
| % | 取余 | 10 % 3 | 1 |
| ++ | 自增 | a = 0;a++ | a = 1 |
| -- | 自减 | a = 1;a-- | a = 0 |
注意:
- 在Go语言中,自增自减是没有像C语言那样前自增或前自减的(就是--a这种是没有的)
- 除法和取余运算中,除数不能为0
🎉小练习:输入半径,计算圆的周长和面积并打印出来(PI为3.14)
func main() {
const PI = 3.14
var r float64
fmt.Println("请输入半径:")
fmt.Scan(&r)
//计算圆的周长
p := 2 * PI * r
fmt.Println("圆的周长为:", p)
//计算圆的面积
area := PI * r * r
fmt.Println("圆的面积为:", area)
}
2.赋值运算符
| 运算符 | 说明 | 示例 |
|---|---|---|
| = | 普通赋值 | c = a+b 将a + b表达式结果赋值给c |
| += | 相加后再赋值 | c += a 等价于 c = c + a |
| -= | 相减后再赋值 | c -= a 等价于 c = c - a |
| *= | 相乘后再赋值 | c *= a 等价于 c = c * a |
| /= | 相除后再赋值 | c /= a 等价于 c = c / a |
| %= | 求余后再赋值 | c %= a 等价于 c = c % a |
3.关系运算符
关系运算符的结果是布尔类型的,要么是true(真),要么false(假)
| 运算符 | 术语 | 示例 | 结果 |
|---|---|---|---|
| == | 判断是否相等 | 4 == 3 | false |
| != | 判断是否不相等 | 4 != 3 | true |
| < | 小于 | 4 < 5 | true |
| 大于 | 5 > 4 | true | |
| <= | 小于等于 | 4 <= 3 | false |
| >= | 大于等于 | 3 >= 2 | true |
4.逻辑运算符
比如我们要判断一个人的年龄是否在18到30这个区间内,我们不能直接30 > age >18这么写,我们只能通过逻辑运算符,写成age > 18 && age < 30才行。
逻辑运算符的结果也是布尔类型。且逻辑运算符的两边一般都是关系运算或者bool类型的值。
注意和C语言的区别:在C语言中是可以把一个整型类型的变量取非的,比如int a = 2;那么!a的结果是0;但是在Go语言中这么做会报错!Go语言要求逻辑运算符旁边表达式的结果或变量是布尔类型
| 运算符 | 术语 | 示例 | 结果 |
|---|---|---|---|
| ! | 非 | !a | 如果a为假,则!a为真 |
| && | 与 | a && b | 如果ab都为真,结果才为真,其他都是假 |
| || | 或 | a || b | ab其中有一个为真,则结果为真;都为假结果才为假 |
5.运算符优先级
运算符可以分为三类:
- 特殊运算符: ()括号 ; 一个. 包名.函数名
- 单目运算符: ! 逻辑非 ; & 取地址
- 双目运算符:算术运算符,关系运算符,&& , || ,赋值运算符
优先级:
-
()括号的优先级最高
-
单目运算符优先级高于双目运算符
-
双目运算符里的优先级:算术运算符 > 关系运算符 >&& > || > 赋值运算符
6.小练习:闰年的判定
闰年要符合下面两个条件之一
- 年份能够被400整除
- 年份能够被4整除但不能被100整除
func main() {
var year int
fmt.Scan(&year)
b := year%400 == 0 || year%4 == 0 && year%100 != 0
fmt.Println(b)
}