go语言基础之运算符

一、运算符分类

1.1 算术运算符

运算符

术语

示例

结果

+

10 + 5

15

-

10 - 5

5

*

10 * 5

50

/

10 / 5

2

%

取模(取余)

10 % 3

1

++

后自增,没有前自增

a=0; a++

a=1

--

后自减,没有前自减

a=2; a--

a=1

 

1.2 关系运算符

运算符

术语

示例

结果

==

相等于

4 == 3

false

!=

不等于

4 != 3

true

小于

4 < 3

false

大于

4 > 3

true

<=

小于等于

4 <= 3

false

>=

大于等于

4 >= 1

true

 

1.3 逻辑运算符

运算符

术语

示例

结果

!

!a

如果a为假,则!a为真;

如果a为真,则!a为假。

&&

a && b

如果a和b都为真,则结果为真,否则为假。

||

a || b

如果a和b有一个为真,则结果为真,二者都为假时,结果为假。

 

示例:

package main //必须有一个main包

import "fmt"

func main() {
	fmt.Println("4 > 3 结果:", 4 > 3)
	fmt.Println("4 != 3 结果:", 4 != 3)

	//非
	fmt.Println("!(4 > 3) 结果:", !(4 > 3))
	fmt.Println("!(4 != 3) 结果:", !(4 != 3))

	//&& 与, 并且,左边右边都为真,结果才为真, 其它都为假
	fmt.Println("true && true 结果:", true && true)
	fmt.Println("true && false 结果:", true && false)

	// ||, 或者, 左边右边都为假,结果才为假,其它都为真
	fmt.Println("true || false 结果:", true || false)
	fmt.Println("false || false 结果:", false || false)

	//非0就是真,0就是假(但是go语言的bool类型和int不兼容)
	//判断一个数,在0-11的范围
	a := 11   //a :=8  结果:true 和 a := 11  结果:false
	fmt.Println("0 <= a && a <= 10 结果为:", 0 <= a && a <= 10)

}

#执行结果:

4 > 3 结果: true
4 != 3 结果: true
!(4 > 3) 结果: false
!(4 != 3) 结果: false
true && true 结果: true
true && false 结果: false
true || false 结果: true
false || false 结果: false
0 <= a && a <= 10 结果为: false

 

1.4 位运算符

运算符

术语

说明

示例

&

按位与

参与运算的两数各对应的二进位相与

60 & 13 结果为12

|

按位或

参与运算的两数各对应的二进位相或

60 | 13 结果为61

^

异或

参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1

60 ^ 13 结果为240

<< 

左移

左移n位就是乘以2的n次方。 左边丢弃,右边补0。

4 << 2 结果为16

>> 

右移

右移n位就是除以2的n次方。 右边丢弃,左边补位。

4 >> 2 结果为1

 

1.5 赋值运算符

运算符

说明

示例

=

普通赋值

c = a + b 将 a + b 表达式结果赋值给 c

+=

相加后再赋值

c += a 等价于 c = c + a

-=

相减后再赋值

c -= a 等价于 c = c - a

*=

相乘后再赋值

c *= a 等价于 c = c * a

/=

相除后再赋值

c /= a 等价于 c = c / a

%=

求余后再赋值

c %= a 等价于 c = c % a

<<=

左移后赋值

c <<= 2 等价于 c = c << 2

>>=

右移后赋值

c >>= 2 等价于 c = c >> 2

&=

按位与后赋值

c &= 2 等价于 c = c & 2

^=

按位异或后赋值

c ^= 2 等价于 c = c ^ 2

|=

按位或后赋值

c |= 2 等价于 c = c | 2

 

1.6 其他运算符

运算符

术语

示例

说明

&

取地址运算符

&a

变量a的地址

*

取值运算符

*a

指针变量a所指向内存的值

 

1.7 运算符优先级

在Go语言中,一元运算符拥有最高的优先级,二元运算符的运算方向均是从左至右。

 

下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:

优先级

运算符

7

^      !  

6

*       /    %    <<    >>    &      &^

5

+      -     |      ^

4

==   !=   <    <=    >=    >

3

<-

2

&&

1

||

 

示例:

10 - 2 * 8 - 4  ===> 10 - 16 -4

10 - 2 * (8 - 4) ===> 10 - 8 = 2

  

 

 

  

posted @ 2018-12-31 11:40  努力哥  阅读(576)  评论(0编辑  收藏  举报