Go|运算符

Go|运算符

  • 算数运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 其他运算符

☘算数运算符

下表列出所有Go语言的算数运算符,假定A值为10,B值为20。

运算符描述实例
+相加A + B 输出结果 30
-相减A - B 输出结果 -10
*相乘A * B 输出结果 200
/想除B / A 输出结果 2
%求余B % A 输出结果 0
++自增A ++ 输出结果 11
--自减A -- 输出结果 9
package main

import "fmt"

func main() {
    a := 10
    b := 3

    // 算术运算符
    fmt.Println(a + b) // 13
    fmt.Println(a - b) // 7
    fmt.Println(a * b) // 30
    fmt.Println(a / b) // 3
    fmt.Println(a % b) // 1
    a++                // a = a + 1
    fmt.Println(a)     // 11
    b--                // b = b - 1
    fmt.Println(b)     // 2

}

/*运行结果:
13
7
30
3
1
11
2
*/

☘关系运算符

运算符描述实例
==检查两个值是否相等,如果相等返回True,否则返回False。(A==B)为False
!=检查两个值是否不相等,如果不相等返回True,否则返回False。(A!=B)为True
>检查左边值是否大于右边值,如果是返回True,否则返回False。(A>B)为False
<检查左边值是否小于右边值,如果是返回True,否则返回False。(A<B)为True
>=检查左边值是否大于等于右边值,如果是返回True,否则返回False。(A>=B)为False
<=检查左边值是否小于等于右边值,如果是返回True,否则返回False。(A<=B)为True
package main

import "fmt"

func main() {
    var a = 11
    var b = 10

    // == 等于 = 赋值
    //关系运算符
    fmt.Println(a == b) // false
    fmt.Println(a != b) // true
    fmt.Println(a > b)  // true
    fmt.Println(a < b)  // false
    fmt.Println(a >= b) // true
    fmt.Println(a <= b) // false

    if a > b {
        fmt.Println("a>b")
    } else {
        fmt.Println("a<b")
    }

}

/*运行结果:
false
true
true
false
true
false
a>b
*/

☘逻辑运算符

假设A值为True,B值为False。

运算符描述实例
&&逻辑 AND 运算符,如果两边的操作都是True,则条件True,否则为False。(A&&B)为False
\\ 逻辑 OR运算符,如果两边的操作有一个True,则条件True,否则为False。(A\\B)为True
!逻辑 NOT运算符,如果条件为True,则逻辑NOT条件False,否则为True。!(A&&B)为True
package main

func main() {
    a := true
    b := false

    //逻辑 && ,我和你都是true,结果才是true
    //和,并且。只要有一个是false,结果就是false
    if a == true && b == true {
        println("a和b都是true")
    } else {
        println("a和b不都是true")
    }

    //逻辑 || ,我和你只要有一个是true,结果就是true
    //或者,只要有一个是true,结果就是true
    if a == true || b == true {
        println("a和b有一个是true")
    } else {
        println("a和b都不是true")
    }

    //逻辑 ! ,!a 取反
    if !a {
        println("a是false", !a)
    } else {
        println("a是true", !a)
    }

}

/*
运行结果:
a和b不都是true
a和b有一个是true
a是true false
*/

☘位运算符 (选学,了解)

运算符描述实例
&按位与运算符“&”是双目运算符,都是1结果为1,否则是0。(A&B)结果为12,二进制为0000 1100
\ 按位或运算符“\”是双目运算符,都是0结果为0,否则是1。(A\B)结果为61,二进制为0011 1101
^按位异或运算符“^”是双目运算符,不同则为1,相同为0。(A^B)结果为49,二进制为0011 0001
&^位清空,a&^b,对于b上的每个数值,如果为0,则取a对应位上的数值,如果为1,则取0。(A&^B)结果为48,二进制为0011 0000
<<左移运算符“<<”是双目运算符。左移n位就是乘以2的n次方,其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。A<<2结果为240,二进制为0011 0000
>>右移运算符“>>”是双目运算符。右移n位就是除以2的n次方,其功能把“>>”左边的运算数的各二进位全部右移若干位,由“>>”右边的数指定移动的位数。A>>2结果为15,二进制为0000 1111
package main

import (
    "fmt"
)

func main() {

    //电路问题

    //位运算:二进制上的0 false 1 true
    //& 与运算:两个位都为1时,结果才为1,0 1
    //| 或运算:两个位都为0时,结果才为1
    // 60 0011 1100
    // 13 0000 1101
    //----------------
    // &  0000 1100 我和你都是1,结果才是1
    // |  0011 1101 我和你有一个是1,结果就是1
    // ^  0011 0001 我和你不一样,结果就是1
    // &^ 0011 0000 我是1,你是0,结果就是1
    // << 左移运算符
    // >> 右移运算符

    var a uint = 60 // 0011 1100
    var b uint = 13 // 0000 1101
    var c uint = 0

    //位运算
    c = a & b
    fmt.Printf("a & b 的值为 %d,二进制:%b\n", c, c)

    c = a | b
    fmt.Printf("a | b 的值为 %d,二进制:%b\n", c, c)

    c = a ^ b
    fmt.Printf("a ^ b 的值为 %d,二进制:%b\n", c, c)

    c = a &^ b
    fmt.Printf("a &^ b 的值为 %d,二进制:%b\n", c, c)

    //移位运算
    c = a << 2
    fmt.Printf("a << 2 的值为 %d,二进制:%b\n", c, c)

    c = a >> 2
    fmt.Printf("a >> 2 的值为 %d,二进制:%b\n", c, c)

}

/*运行结果:
a | b 的值为 61,二进制:111101
a ^ b 的值为 49,二进制:110001
a &^ b 的值为 48,二进制:110000
a << 2 的值为 240,二进制:11110000
a >> 2 的值为 15,二进制:1111
 */

☘赋值运算符

运算符描述实例
=赋值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
<<=左移会赋值C <<= 2 等于 C = C << 2
>>=右移后赋值C >>= 2 等于 C = C >> 2
&=按位与后赋值C &= 2 等于 C = C & 2
^=按位异或后赋值C ^= 2 等于 C = C ^ 2
!=按位或后赋值C \=2 等于 C = C \2
package main

func main() {
    var a int = 10
    var b int

    // =赋值
    b = a // 把a的值赋给b
    println("b = ", b)

    // +=赋值 a = a + 1 等价于 a += 1
    a += 1
    println("a = ", a)

    // -=赋值 a = a - 1 等价于 a -= 1
    a -= 1
    println("a = ", a)

    // *=赋值 a = a * 1 等价于 a *= 1
    a *= 1
    println("a = ", a)

    // /=赋值 a = a / 1 等价于 a /= 1
    a /= 1
    println("a = ", a)

    // %=赋值 a = a % 1 等价于 a %= 1
    a %= 1
    println("a = ", a)

    // <<=赋值 a = a << 1 等价于 a <<= 1
    a <<= 1
    println("a = ", a)

    // >>=赋值 a = a >> 1 等价于 a >>= 1
    a >>= 1
    println("a = ", a)

    // &=赋值 a = a & 1 等价于 a &= 1
    a &= 1
    println("a = ", a)

    // ^=赋值 a = a ^ 1 等价于 a ^= 1
    a ^= 1
    println("a = ", a)

    // |=赋值 a = a | 1 等价于 a |= 1
    a |= 1
    println("a = ", a)

    // &^=赋值 a = a &^ 1 等价于 a &^= 1
    a &^= 1
    println("a = ", a)

}

/*运行结果:
b =  10
a =  11
a =  10
a =  10
a =  10
a =  0
a =  0
a =  0
a =  0
a =  1
a =  1
a =  0
 */

☘其他运算符(指针)

运算符描述实例
&返回变量存储地址&a;将给出变量实际地址
*指针变量*a;是一个指针变量
无标签
评论区
头像
    头像
    ytkevybwoj
      

    内容的丰富性和深度让人仿佛置身于知识的海洋,受益匪浅。

文章目录