• golang 运算符


    1. golang 运算符

    1.1. Types of Operators

    1. Bitwise Operators (位运算符)
    2. Logical Operators (逻辑运算符)
    3. Arithmetic Operators (算术运算符)
    4. Assignment Operators (赋值运算符)
    5. Comparison Operators (比较运算符)

    1.2. Bitwise Operators (位运算符)

    package main
    
    import "fmt"
    
    func main() {
        x := 3
        y := 5
    	z := false
        // 3 -> 011
        // 5 -> 101
        fmt.Println("X AND Y = ", x & y)
        fmt.Println("X OR Y = ", x | y)
        fmt.Println("X EXOR Y = ", x ^ y)
        fmt.Println("X Right Shift 1  = ", x >> 1)
        fmt.Println("X Right Shift 2  = ", x >> 2)
        fmt.Println("Y Left Shift 1 = ", y << 1)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    $ go run bitwise/main.go
    
    X AND Y =  1
    X OR Y =  7
    X EXOR Y =  6
    X Right Shift 1  =  1
    X Right Shift 2  =  0
    Y Left Shift 1 =  10
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    很多编程语言使用 ~ 作为一元按位取反(NOT)操作符, Go 重用 ^ XOR 操作符来按位取反:

    // 错误的取反操作
    func main() {
        fmt.Println(~2) // bitwise complement operator is ^
    }
     
    // 正确示例
    func main() {
        var d uint8 = 2
        fmt.Printf("%08b\n", d)     // 00000010
        fmt.Printf("%08b\n", ^d)    // 11111101
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    同时 ^ 也是按位异或(XOR)操作符:

    10000010 ^ 00000010 = 10000000
    
    • 1

    1.3. Logical Operators (逻辑运算符)

    package main
    
    import "fmt"
    
    func main() {
        a := 45
        b := "Something"
        fmt.Println(a > 40 && b == "Something")
        fmt.Println(a < 40 && b == "Something")
        fmt.Println(a < 40 || b == "Something")
        fmt.Println(a < 40 || b != "Something")
        fmt.Println(!(a < 40 || b != "Something"))
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    $ go run logical/main.go
    
    true
    false
    true
    false
    true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.4. Arithmetic Operators (算术运算符)

    package main
    
    import "fmt"
    
    func main() {
        a := 30
        b := 50
        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
    $ go run arithmetic/main.go
    A + B =  80
    A - B =  -20
    A * B =  1500
    A / B =  0
    A % B =  30
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    package main
    
    import "fmt"
    
    func main() {
        k := 3
        j := 20
        fmt.Println("k = ", k)
        fmt.Println("j = ", j)
        k++
        j--
        fmt.Println("k = ", k)
        fmt.Println("j = ", j)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    $ go run arithmetic/main.go
    
    k =  3
    j =  20
    
    k =  4
    j =  19
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.5. Assignment Operators (赋值运算符)

    package main
    
    import "fmt"
    
    func main() {
        var a int = 100
        b := 20
        fmt.Println("a = ", a)
        fmt.Println("b = ", b)
        a += 30
        fmt.Println("a = ", a)
        b -= 5
        fmt.Println("b = ", b)
        a *= b
        fmt.Println("a = ", a)
        fmt.Println("b = ", b)
        a /= b
        fmt.Println("a = ", a)
        fmt.Println("b = ", 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
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    $ go run assignment/main.go
    
    a =  100
    b =  20
    
    a =  130
    b =  15
    
    a =  1950
    b =  15
    
    a =  130
    b =  15
    
    a =  10
    b =  15
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    1.6. Comparison Operators (比较运算符)

    package main
    
    import "fmt"
    
    func main() {
        a := 45
        b := 12
        fmt.Println("Is A equal to B ? ", a == b)
        fmt.Println("Is A not equal to B ? ", a != b)
        fmt.Println("Is A greater than B ? ", a > b)
        fmt.Println("Is A less than B ? ", a < b)
        fmt.Println("Is A greater than or equal to B ? ", a >= b)
        fmt.Println("Is A less than or equal to B ? ", a <= b)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    $ go run comparison/main.go
    
    Is A equal to B ?  false
    Is A not equal to B ?  true
    Is A greater than B ?  true
    Is A less than B ?  false
    Is A greater than or equal to B ?  true
    Is A less than or equal to B ?  false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    某学院 期末test
    最少刷题数
    代码随想录训练营day3:链表part1
    【SCSS篇】Vite+Vue3项目全局引入scss文件
    物 理 层
    【C++】类和对象 从入门到超神 (中)
    迅为IMX8M开发板设备树下的platform驱动实验程序编写
    连接云服务器Docker中的Mysql 详细图文操作(全)
    C - Copy (hdu)
    PC首页资源加载速度由8s降到2s的优化实践
  • 原文地址:https://blog.csdn.net/wan212000/article/details/132971346