• Golang运算符


    前言

    运算符用于在程序运行时 执行数学或逻辑运算

     Go 语言内置的运算符有: 

    1. 算术运算符
    2. 关系运算符
    3. 逻辑运算符
    4. 位运算符
    5. 赋值运算符

     

    算数运算符

    i++和i++就是i=i-1和i=i+1的意思

    + 相加
    - 相减
    * 相乘
    / 相除
    % 求余
    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	var (
    		a = 5
    		b = 2
    	)
    	fmt.Println(a + b) //+相加
    	fmt.Println(a - b) //-相减
    	fmt.Println(a * b) //*相乘
    	fmt.Println(a / b) // /相互除
    	fmt.Println(a % b) //取于
    	a++                //相当于 a=a+1
    	fmt.Println(a)
    	b-- //相当于 b=b-1
    	fmt.Println(b)
    
    }
    

      

    关系运算符

    Go语言是强类型语言,只有相同数据类型的变量才能比较是否相等

    == 检查两个值是否相等,如果相等返回 True 否则返回 False。
    != 检查两个值是否不相等,如果不相等返回 True 否则返回 False。
    > 检查左边值是否大于右边值,如果是返回 True 否则返回 False。
    >= 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。
    < 检查左边值是否小于右边值,如果是返回 True 否则返回 False。
    <= 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。
    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	var (
    		a = 5
    		b = 3
    	)
    	fmt.Println(a == b) //== Go语言是强类型语言,只有相同数据类型的变量,才能比较是否相等
    	fmt.Println(a != b) //!= 判断是否不相等
    	fmt.Println(a > b)  //大于
    	fmt.Println(a >= b) //大于等于
    	fmt.Println(a < b)  //小于
    	fmt.Println(a <= b) //小于等于
    }
    

      

    逻辑运算符

    Go里面没有 and 、or、not关键字 只有 && 、||以及!

    && 逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。
    || 逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。
    ! 逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True。
    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	var (
    		a = true
    		b = false
    	)
    
    	fmt.Println(a && b) //false
    	fmt.Println(a || b) //true
    	fmt.Println(!b)     //true
    
    }
    

      

    位运算符

    位运算符  是针对整数在内存中的二进制位 进行操作。后面主要用于 Linux文件权限和IP相关 

    运算符描述
    & 参与运算的两数各对应的二进位相与。
    (两位均为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() {
    	var (
    		n1 = 5 //101
    		n2 = 2 //010
    	)
    	//& 按位与(上下两位均为1才为1)
    	fmt.Println(5 & 2) //000
    	//| 按位或(上下两位有1个1就为1)
    	fmt.Println(n1 | n2) //111
    	//^ 按位异或(上下两位不一样则为1)
    	fmt.Println(5 ^ 2) //111
    	//<<:将二进制位左移 N位
    	fmt.Println(5<<1) //101--》1010====>10
    	fmt.Println(1<<10)//1---》10000000000==>1024
    	//<<:将二进制位右移 N位
    	fmt.Println(5>>2)//101==》10==》2
    	fmt.Println(5>>2)//101==》1==》1
    	fmt.Println(5>>2)//101==》0==》0
    
    
    
    }
    

      

    赋值运算符

    赋值运算就是运算之后再重新赋值

    = 简单的赋值运算符,将一个表达式的值赋给一个左值
    += 相加后再赋值
    -= 相减后再赋值
    *= 相乘后再赋值
    /= 相除后再赋值
    %= 求余后再赋值
    <<= 左移后赋值
    >>= 右移后赋值
    &= 按位与后赋值
    |= 按位或后赋值
    ^= 按位异或后赋值
    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	var n1 int
    	n1 = 10
    	n1++     //n1=n1+1
    	n1--     //n1=n1-1
    	n1 *= 3  //n1=n*3
    	n1 /= 2  //n1=n1/2
    	n1 %= 2  //n1=n1%2
    	n1 >>= 2 //n1=n1>>2
    	n1 <<= 2 //n1=n1<<2
    	n1 &= 2
    	n1 |= 3
    	n1 ^= 4
    	fmt.Println(n1)
    
    }
    

      

    see also

  • 相关阅读:
    DAY09(for语句)
    Python 下载 tushare 数据,然后调用 C++ DLL 计算 wMA 存入本地 csv 文件再 python 读取
    Python socket编程之八:阶段性总结
    Ctex + Lyx = 自用 Latex 编辑环境
    matlab下二重积分的蒙特卡洛算法
    实验9 根据材料编程
    实验5 编写、调试具有多个段的程序
    实验4 [bx]和loop的使用
    实验3 编程、编译、连接、跟踪
    汇编语言第三章总结
  • 原文地址:https://www.cnblogs.com/sss4/p/12544571.html
Copyright © 2020-2023  润新知