03go运算符

go运算符

Golang 内置的运算符

  1. 算术运算符
  2. 关系运算符
  3. 逻辑运算符
  4. 位运算符
  5. 赋值运算符

1 、算数运算符

运算符 描述
+ 相加
- 相减
* 相乘
/ 相除
% 求余=被除数-(被除数/除数)*除数

注意: ++(自增)和--(自减)在 Go 语言中是单独的语句,并不是运算符。

package main
import (
	"fmt"
)
func main() {
	fmt.Println("10+3=", 10+3) // =13
	fmt.Println("10-3=", 10-3) // =7
	fmt.Println("10*3=", 10*3) // =30
    
	//除法注意:如果运算的数都是整数,那么除后,去掉小数部分,保留整数部分
	fmt.Println("10/3=", 10/3) //3
	fmt.Println("10.0/3=", 10.0/3) //3.3333333333333335
    
	// 取余注意 余数=被除数-(被除数/除数)*除数
	fmt.Println("10%3=", 10%3) // =1
	fmt.Println("-10%3=", -10%3) // -1
	fmt.Println("10%-3=", 10%-3) // =1
	fmt.Println("-10%-3=", -10%-3) // =-1
}

注意:在 golang 中,++ 和 -- 只能独立使用 错误写法如下:

var i int = 8
var a int
a = i++ //错误,i++只能独立使用
a = i-- //错误, i--只能独立使用

var i int = 1
++i // 错误,在 golang 没有 前++
--i // 错误,在 golang 没有 前--
fmt.Println("i=", i)

正确写法

var i int = 1
i++
fmt.Println("i=", i)

2、关系运算符

运算符 描述
== 检查两个值是否相等,如果相等返回 True 否则返回 False。
!= 检查两个值是否不相等,如果不相等返回 True 否则返回 False。
> 检查左边值是否大于右边值,如果是返回 True 否则返回 False。
>= 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。
< 检查左边值是否小于右边值,如果是返回 True 否则返回 False。
<= 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。

3、逻辑运算符

运算符 描述
&& 逻辑与运算符。如果两个操作数都非零,则条件变为真
|| 逻辑或操作。如果任何两个操作数是非零,则条件变为真
! 逻辑非运算符。使用反转操作数的逻辑状态。如果条件为真,那么逻辑非操后结果为假

4、赋值运算符

运算符 描述
= 简单的赋值运算符,将一个表达式的值赋给一个左值
+= 相加后再赋值
-= 相减后再赋值
*= 相乘后再赋值
/= 相除后再赋值
%= 求余后再赋值
<<= 左移后赋值
>>= 右移后赋值
&= 按位与后赋值
|= 按位或后赋值
^= 按位异或后赋值

5、位运算符

A B A&B A|B A^B
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

这里最难理解的就是^了,只要认为AB两者都相同的时候,为0,其他都为1

假设A为60,B为13

A: 0011 1100

B: 0000 1101

运算 描述 示例
& 二进制与操作副本位的结果,如果它存在于两个操作数 (A & B) = 12, 也就是 0000 1100
| 二进制或操作副本,如果它存在一个操作数 (A | B) = 61, 也就是 0011 1101
^ 二进制异或操作副本,如果它被设置在一个操作数就是按位取非 (A ^ B) = 49, 也就是 0011 0001
&^ 二进制位清空&^ (A&^B)=48,也就是110000
<< 二进制左移位运算符。左边的操作数的值向左移动由右操作数指定的位数 A << 2 =240 也就是 1111 0000
>> 二进制向右移位运算符。左边的操作数的值由右操作数指定的位数向右移动 A >> 2 = 15 也就是 0000 1111
& 两位均为 1 才为 1

| 两位有一个为 1 就为 1

^ 相异或 两位不一样则为 1

<< 左移 n 位就是乘以 2 的 n 次方。 “a<<b”是把 a 的各二进位全部左移 b 位,
高位丢弃,低位补 0。

>> 右移 n 位就是除以 2 的 n 次方。

6、优先级运算符优先级

有些运算符拥有较高的优先级,二元运算符的运算方向均是从左至右。下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:

优先级 运算符
7 ~ ! ++ --
6 * / % << >> & &^
5 + - ^
4 == != < <= >= >
3 <-
2 &&
1 ||

当然,你可以通过使用括号来临时提升某个表达式的整体运算优先级。

posted @ 2020-07-14 02:28  slzhao  阅读(100)  评论(0编辑  收藏  举报