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)
- 算术运算符(+ - * / %)
- 移位运算符(<< >>)
- 关系运算符(< > <= >= 在 != == 之前)
- 位运算符(依次按& ^ |)
- 逻辑运算符(依次&& ||)
- 赋值运算符(= += -= *= /= >>= <<= &= ^= |=)
- 逗号