07-Go语言运算符

算术运算符

image
package main

import "fmt"

func main() {
    // Go语言算术运算符
    // 注意点: Go语言中必须相同类型才能进行运算
    /*
        +   相加
        -   相减
        *   相乘
        /   相除
        %   取余
        ++  自增
        --  自减
    */
    var num1, num2 = 8, 2
    // +
    var res int = num1 + num2
    // -
    var res1 int = num1 - num2
    // *
    var res2 int = num1 * num2
    // /
    var res3 int = num1 / num2
    // %
    var res4 int = num1 % num2
    // ++
    // 注意点: ++ 和 -- 都不可以前置, 而且必须独占一行
    num1++
    var res5 int = num1
    // --
    num1--
    var res6 int = num1

    fmt.Println(res)  // 10
    fmt.Println(res1) // 6
    fmt.Println(res2) // 16
    fmt.Println(res3) // 4
    fmt.Println(res4) // 0
    fmt.Println(res5) // 9
    fmt.Println(res6) // 8

}

  • 注意点:
    • Go语言中必须相同类型才能进行运算
    • ++ 和 -- 都不可以前置, 而且必须独占一行

关系运算符

image
  • 注意点:
    • Go语言中没有非零即真, 关系运算符只能返回true和false
    • 关系运算符优先级, ()小括号的优先级最高

逻辑运算符

image

&& 一假则假
|| 一真则真
! 真变假, 假变真

  • 注意点:
    • GO语言中的逻辑运算符返回的是true 和 false
    • 参与运算的表达式的返回值都必须是布尔类型才行
    
    res1 := 1 || 1  // 报错, || 两边必须是布尔类型
    res2 := 1 && 1  //  报错, && 两边必须是布尔类型
    res3 := !0   // 报错, 没有非零即真
    

位运算符

image
  • 注意点:
    • 新增了 &^运算符
    package main
    
    import "fmt"
    
    func main() {
        // &^ 逻辑清零运算符
        // 规则: 如果b的二进制位是1, 那么就清零
        // 如果b的二进制位是0, 那么就保存a位对应的二进制
    
        /*
             0100
        &^   1001
        -------------------
             0100         // 4
        */
        a, b := 4, 9
        res := a &^ b
        fmt.Println(res)
    }
    
    

赋值运算符

image
package main

import "fmt"

func main() {
    // Go语言中的赋值运算符和C语言一样
    //  = += *= /= %= &= |= ^= <<= >>=
    //  只不过新增了一个   &^=

    var num int
    num = 10
    num += 6  // 相当于 num = num + 6
    num -= 6  // 相当于 num = num - 6
    num *= 6  // 相当于 num = num * 6
    num /= 6  // 相当于 num = num / 6
    num %= 6  // 相当于 num = num % 6
    num &= 6  // 相当于 num = num & 6
    num |= 6  // 相当于 num = num | 6
    num <<= 6 // 相当于 num = num << 6
    num >>= 6 // 相当于 num = num >> 6
    num &^= 6 // 相当于 num = num &^ 6
    fmt.Println(num)

}

其他运算符

image
package main

import "fmt"

func main() {
    // & 取地址运算符
    // * 访问地址运算符

    var num int
    num = 10
    var p *int
    p = &num
    fmt.Println(p)  // p 里面存放的是地址
    fmt.Println(*p) // *p 里面存放的是p所指向的内存单元
}

你可能感兴趣的:(07-Go语言运算符)