Go语言入门:运算符

128 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 10 天,点击查看活动详情


1.算术运算符

运算符术语示例结果
+10 + 515
-10 - 55
*10 * 550
/10 / 52
%取余10 % 31
++自增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 == 3false
!=判断是否不相等4 != 3true
<小于4 < 5true
大于5 > 4true
<=小于等于4 <= 3false
>=大于等于3 >= 2true

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 || bab其中有一个为真,则结果为真;都为假结果才为假

5.运算符优先级

运算符可以分为三类:

  • 特殊运算符: ()括号 ; 一个. 包名.函数名
  • 单目运算符: ! 逻辑非 ; & 取地址
  • 双目运算符:算术运算符,关系运算符,&& , || ,赋值运算符

优先级:

  1. ()括号的优先级最高

  2. 单目运算符优先级高于双目运算符

  3. 双目运算符里的优先级:算术运算符 > 关系运算符 >&& > || > 赋值运算符

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)
}