美文网首页
07-Go语言运算符

07-Go语言运算符

作者: 低头看云 | 来源:发表于2018-10-15 18:45 被阅读0次

    算术运算符

    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语言运算符

          本文链接:https://www.haomeiwen.com/subject/itkqzftx.html