(十)golang--运算符

时间:2022-07-23
本文章向大家介绍(十)golang--运算符,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.算术运算符

  + - * / % ++ --

使用细节: (1)对于"/"号,整数除和小数除的区别;

(2)++和--只能独立使用,即a=a++是不允许的;没有++a和--a;if a++ > 0也是不合法的;

2.赋值运算符

  = += -= *= /= %=

  <<= >>= &= ^= |=

使用特点: (1)运算顺序从右往左;

(2)赋值运算符的左边只能是变量,右边可以是表达式,变量和常量;

小例子:不用中间变量,交换两个变量的值:

package main

import (
    "fmt"
)

func main() {
    var num1 int = 3
    var num2 int = 5
    fmt.Println("num1的值是:", num1)
    fmt.Println("num2的值是:", num2)
    num1 = num1 + num2
    fmt.Println("num1的值是:", num1)
    num2 = num1 - num2 //相当于num2=num1+num2-num2 ==>num2=num1
    fmt.Println("num2的值是:", num2)
    num1 = num1 - num2 //相当于num1=num1+num2-num1 ==>num1=num2
    fmt.Println("num1的值是:", num1)
    fmt.Println("num2的值是:", num2)
}

我这个go版本可以直接使用和python一样语法:即num1, num2 = num2, num1

3.比较运算符

  == != < > <= >=

4.逻辑运算符

  && 逻辑与:如果两边都为true,则返回true,否则返回false

  || 逻辑或:如果两边至少有一个true,则返回true,否则返回false

  | 逻辑非:如果和条件相反的布尔值

注意:逻辑与第一个条件是false,第二个条件就不会判断;逻辑或如果第一个条件是true,则第二个条件不会被判断;

5.位运算符

  & | ^ << >>

6.其他运算符

  & *

golang不支持三元运算符,只能用if else进行实现;

var i int = 10
var j int = 20
var n int
if i > j {
    n = i
} else {
    n = j
}

运算符的优先级:

(1)只有单目运算符、赋值运算符是从右向左的;

  以下优先级依次降低:

  • () [] ++ --
  • 单目运算(* & sizeof)
  • 算术运算符(+ - * / %)
  • 移位运算符(<< >>)
  • 关系运算符(< > <= >= 在 != == 之前)
  • 位运算符(依次按& ^ |)
  • 逻辑运算符(依次&& ||)
  • 赋值运算符(= += -= *= /= >>= <<= &= ^= |=)
  • 逗号