• Go语言入门【2】运算符


    算术运算符

    假设a为3,b为2

    运算符描述示例
    +加法运算符a + b = 5
    -减法运算符a - b = 1
    *乘法运算符a * b = 6
    /除法运算符a / b = 1
    %取余运算符a % b = 1
    ++自增运算符a++ = 4
    自减运算符b-- = 1

    代码示例:

    package main
    
    import "fmt"
    
    func main() {
    	a := 3
    	b := 2
    	fmt.Println("a + b = ", a + b)
    	fmt.Println("a - b = ", a - b)
    	fmt.Println("a * b = ", a * b)
    	fmt.Println("a / b = ", a / b)
    	fmt.Println("a % b = ", a % b)
    	a++
    	b--
    	fmt.Println("a ++ = ", a)
    	fmt.Println("b -- = ", b)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    运行结果:

    运行结果

    关系运算符

    假设a为3,b为2

    运算符描述示例
    ==判断两个值是否相等,如果相等返回true,否则返回falsea == b 为 false
    !=判断两个值是否不相等,如果不相等返回true 否则返回falsea != b 为 true
    >判断左边值是否大于右边值,如果是返回true 否则返回falsea > b 为 true
    <判断左边值是否小于右边值,如果是返回true 否则返回falsea < b 为 false
    >=判断左边值是否大于等于右边值,如果是返回true 否则返回falsea >= b 为 true
    <=判断左边值是否小于等于右边值,如果是返回true 否则返回false。a <= b 为 false

    代码示例:

    package main
    
    import "fmt"
    
    func main() {
    	a := 3
    	b := 2
    	fmt.Println("a == b : ", a == b)
    	fmt.Println("a != b : ", a != b)
    	fmt.Println("a > b : ", a > b)
    	fmt.Println("a < b : ", a < b)
    	fmt.Println("a >= b : ", a >= b)
    	fmt.Println("a <= b : ", a <= b)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    运行结果:

    运行结果

    逻辑运算符

    假设a为true,b为false

    运算符描述实例
    &&逻辑与运算符,如果两边都为true,则为true,否则为falsea && b 为 false
    ||逻辑或运算符,如果任意有一边为true,则为true,否则为falsea || b 为 true
    !逻辑非运算符,如果为true,返回false,如果为false,返回true!a 为 false, !b 为true

    代码示例:

    package main
    
    import "fmt"
    
    func main() {
    	a := true
    	b := false
    	fmt.Println("a && b : ", a && b)
    	fmt.Println("a || b : ", a || b)
    	fmt.Println("!a : ", !a)
    	fmt.Println("!b : ", !b)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    运行结果:

    运行结果

    注意:逻辑运算符通常用于在if条件中做判断使用,并且逻辑运算符可以与关系运算符结合使用,例如 a > b && b > c,当a 大于 b,并且b 大于 c 时则为true,否则为false。

    位运算符

    位运算符是对整数的二进制进行计算

    假设a为3,b为2

    则a转为二进制为:0011,b的二进制为:0010

    a & b的计算方式步骤:
    第一步:将a和b转为二进制
    a = 0011    b = 0010
    第二步:将转为二进制的两个数进行按位与运算
    按位与运算规则:对应的两位数都为1则结果为1,计算结果如下
    a:   0011
    b:   0010
    &   ------
    结果:0010
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    运算符描述实例
    &按位与运算符,将两边的整数作为二进制进行按位与运算,两位都为1则为1a & b = 2,二进制为0010
    |按位或运算符,将两边的整数作为二进制进行按位或运算,两位其中一个为1,则为1a | b = 3,二进制为0011
    ^异或运算符,将两边的整数作为二进制进行按位或运算,两位不相同则为1a ^ b = 1,二进制为0001
    <<左移运算符,将左边的数转为二进制后向左位移右边指定的位数,左移n位就是乘以2的n次方a << 2 结果为12 ,二进制为 1100
    >>右移运算符,将左边的数转为二进制后向右位移右边指定的位数,右移n位就是除以2的n次方a >> 2 结果为0 ,二进制为 0000

    示例代码:

    package main
    
    import "fmt"
    
    func main() {
    	a := 3
    	b := 2
    	fmt.Println("a & b = ", a & b)
    	fmt.Println("a | b = ", a | b)
    	fmt.Println("a ^ b = ", a ^ b)
    	fmt.Println("a << 2 = ", a << 2)
    	fmt.Println("a >> 2 = ", a >> 2)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    运行结果:

    运行结果

    赋值运算符

    运算符描述实例
    =赋值运算符,将右边表达式的值赋值给左边变量c = a + b => 表达式 a + b的结果赋值给变量c
    +=相加后再赋值a += b => a = a + b
    -=相减后再赋值a -= b => a = a - b
    *=相乘后再赋值a *= b => a = a * b
    /=相除后再赋值a /= b => a = a / b
    %=求余后再赋值a %= b => a = a % b
    <<=左移后赋值a <<= 2 => a = a << 2
    >>=右移后赋值a >>= 2 => a = a >> 2
    &=按位与后赋值a &= 2 => a = a & 2
    ^=按位异或后赋值a ^= 2 => a = a ^ 2
    |=按位或后赋值a |= 2 => a = a | 2

    代码示例:

    package main
    
    import "fmt"
    
    func main() {
    	a := 3
    	b := 2
    	var c int
    	c = a + b
    	fmt.Println("c = ", c)
    	a += b
    	fmt.Println("a = ", a)
    	a -= b
    	fmt.Println("a = ", a)
    	a *= b
    	fmt.Println("a = ", a)
    	a /= b
    	fmt.Println("a = ", a)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    运行结果:

    运行结果

    运算符优先级

    由上到下代表优先级从高到低,相同优先级的运算符在计算的过程中按照从左往右依次计算,同时还可以临时使用小括号提高优先级。

    优先级运算符
    5* / % << >> & &^
    4+ - | ^
    3== != < <= > >=
    2&&
    1||

    代码示例:

    package main
    
    import "fmt"
    
    func main() {
    	a := 20
    	b := 10
    	c := 15
    	d := 5
    	fmt.Println("(a + b) * c / d = ", ( a + b ) * c / d)
    	fmt.Println("((a + b) * c) / d = ", (( a + b) * c) / d)
    	fmt.Println("(a + b) * (c / d) = ", (a + b) * (c / d))
    	fmt.Println("a + (b * c) / d = ", a + (b * c) / d)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    运行结果:

    运行结果

  • 相关阅读:
    授权控制-数据库用户分类、授权(GRANT)、收权(REVOKE)
    Selenium隐藏浏览器和元素截屏实践
    每日一博 - WebHook vs Polling
    微信小程序--》Vant组件库的安装与使用
    STM32cubeMX配置FreeRTOS-51、USB-U盘读写
    第28章_瑞萨MCU零基础入门系列教程之基于面向对象的工程结构
    第1章丨IRIS Globals 简介
    链表(单链表、双链表)
    论文精读:Axial-DeepLab: Stand-Alone Axial-Attention forPanoptic Segmentation
    Revit如何使用幕墙功能绘制百叶窗
  • 原文地址:https://blog.csdn.net/qq_41286145/article/details/127705322