zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    NYOJ 205
    NYOJ 187
    NYOJ 105
    NUOJ 88
    NYOJ 70
    LL(1)算法
    MATLAB的一些基础知识
    Ubuntu raid5+lvm实验
    空间滤波
    认识weblogic的各个机构
  • 原文地址:https://www.cnblogs.com/sss4/p/12544571.html
Copyright © 2011-2022 走看看