一、运算符的基本介绍

运算符是一种特殊的符号,用以表示数据的运算,复制和比较等……

 主要分为以下几类:

    算术运算符 、 复制运算符 、 比较运算符/关系运算符 、 逻辑运算符 、 位运算符 、 其他运算符

1、算术运算符:

算术运算符是对数值类型的变量进行运算的,比如:加减乘除。在Go程序中使用的非常多

    1.1算术运算符 --- 表

    

golang func前的括号和后的括号 golang运算符优先级_赋值运算符

举例:

/ 的使用特点

    

golang func前的括号和后的括号 golang运算符优先级_赋值运算符_02

% 的使用特点

// 演示 % 的使用 
    // 看一个公式 a % b = a - a / b * b
    fmt.Println("10%3=", 10 % 3) // =1 
    fmt.Println("-10%3=", -10 % 3) // = -10 - (-10) / 3 * 3 = -10 - (-9) = -1 
    fmt.Println("10%-3=", 10 % -3) // =1 
    fmt.Println("-10%-3=", -10 % -3) // =-1

++  --的使用

    

golang func前的括号和后的括号 golang运算符优先级_关系运算符_03

1.2 算术运算符使用的注意事项

      1) 对于除号 "/",它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如: x := 19/5 ,结果是 3

      2) 当对一个数取模时,可以等价 a%b=a-a/b*b , 这样我们可以看到 取模的一个本质运算。

      3) Golang 的自增自减只能当做一个独立语言使用时,不能这样使用 

golang func前的括号和后的括号 golang运算符优先级_赋值运算符_04

4) Golang 的++ 和 -- 只能写在变量的后面,不能写在变量的前面,即:只有 a++ a-- 没有 ++a --a 

      

golang func前的括号和后的括号 golang运算符优先级_赋值运算符_05

5) Golang 的设计者去掉 c / java 中的 自增自减的容易混淆的写法,让 Golang 更加简洁,统一。(强制性的)


  2、关系运算符(比较运算符)

     2.1基本介绍:

      1)、关系运算符的结果都是bool型,也就是要么是true,要么是false

      2)、关系表达式经常用在if结构的条件中或循环结构的条件中

     2.2关系运算符---表

    

golang func前的括号和后的括号 golang运算符优先级_赋值运算符_06

例如:    

golang func前的括号和后的括号 golang运算符优先级_关系运算符_07

2.3 关系运算符的细节说明

      1) 关系运算符的结果都是 bool 型,也就是要么是 true,要么是 false。

      2) 关系运算符组成的表达式,我们称为关系表达式: a > b

      3) 比较运算符"=="不能误写成 "=" !! 

  3、逻辑运行符

    3.1基本介绍

      用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个bool值

    3.2逻辑运算符的说明

     

golang func前的括号和后的括号 golang运算符优先级_赋值运算符_08

举例:

      

golang func前的括号和后的括号 golang运算符优先级_运算符_09

        

golang func前的括号和后的括号 golang运算符优先级_关系运算符_10

3.3注意事项和细节说明    

      1) &&也叫短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false

      2) ||也叫短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true

      3) 案例演示      

golang func前的括号和后的括号 golang运算符优先级_运算符_11

4.赋值运算符

    4.1基本介绍

      赋值运算符就是将某个运算后的值,赋给指定的变量。

    4.2赋值运算符的分类

      

golang func前的括号和后的括号 golang运算符优先级_运算符_12

        

golang func前的括号和后的括号 golang运算符优先级_运算符_13

4.3基本使用

      1) 赋值基本案例

      2) 有两个变量,a 和 b,要求将其进行交换,最终打印结果

      3) += 的使用案例

      4) 案例    

golang func前的括号和后的括号 golang运算符优先级_运算符_14

4.4赋值运算符的特点

      4.4.1 运算顺序从右往左

      

golang func前的括号和后的括号 golang运算符优先级_赋值运算符_15

4.4.2 赋值运算符的左边  只能是变量,右边 可以是变量、表达式、常量值

      

golang func前的括号和后的括号 golang运算符优先级_赋值运算符_16

4.4.3 符合赋值运算符等价于下面的效果

      比如: a+=3 等价于 a = a + 3

    4.5 举例   

      有两个变量,a 和 b,要求将其进行交换,但是不允许使用中间变量,最终打印结果

      

golang func前的括号和后的括号 golang运算符优先级_关系运算符_17

5、位运算符    

golang func前的括号和后的括号 golang运算符优先级_赋值运算符_18

6、其他运算符说明    

golang func前的括号和后的括号 golang运算符优先级_赋值运算符_19

    举个栗子:

    

golang func前的括号和后的括号 golang运算符优先级_关系运算符_20

特别说明:(重)GoLang明确不支持三元运算符

    举个栗子:如果在golang中实现三元运算的效果

    

golang func前的括号和后的括号 golang运算符优先级_关系运算符_21

7、运算符的优先级

    

golang func前的括号和后的括号 golang运算符优先级_运算符_22

对上图的说明:

      1) 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。

      2) 只有单目运算符、赋值运算符是从右向左运算的。

      3) 梳理了一个大概的优先级

1:括号,++, --
        2: 单目运算
        3:算术运算符
        4:移位运算
        5:关系运算符
        6:位运算符
        7:逻辑运算符
        8:赋值运算符
        9:逗号