Go语言的运算符

叁歲伎倆 2022-12-29 14:07 227阅读 0赞

1 算术运算符






















































运算符

术语

示例

结果

+

10 + 5

15

-

10 - 5

5

10 5

50

/

10 / 5

2(值取整数位,要想带小数为,则10.0/5=2.0)

%

取模(取余)

10 % 3

1(取模公式:a-a/b*b)

++

后自增,没有前自增

(单独语句,并不是运算符)

a=0; a++

a=1

后自减,没有前自减

(单独语句,并不是运算符)

a=2; a—

a=1

2 关系运算符
















































运算符

术语

示例

结果

==

相等于

4 == 3

false

!=

不等于

4 != 3

true

小于

4 < 3

false

大于

4 > 3

true

<=

小于等于

4 <= 3

false

>=

大于等于

4 >= 1

true

3 逻辑运算符






























运算符

术语

示例

结果

!

!a

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

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

&&

a && b

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

||

a || b

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

  1. package main
  2. import "fmt"
  3. func main(){
  4. fmt.Println("4>3 结果:", 4>3)
  5. fmt.Println("4!=3 结果", 4!=3)
  6. fmt.Println("!(4>3) 结果:", !(4>3))
  7. fmt.Println("!(4!=3) 结果", !(4!=3))
  8. //&& 与,并且, 左边右边都为真,结果才为真
  9. fmt.Println("true && true 结果:", true && true)
  10. fmt.Println("true && false 结果:", true && false)
  11. // || 或 左边和右边都为假的时候,结果才为假,其他都为真
  12. fmt.Println("true || false 结果:", true || false)
  13. fmt.Println("false || false 结果:", false || false)
  14. a := 10
  15. // fmt.Println("0<a<=10 结果为:", 0<a<=10) //go中不支持这种连写,python支持
  16. fmt.Println("0<a && a <=10 的结果:", 0<a && a <=10)
  17. }

4 位运算符










































运算符

术语

说明

示例

&

按位与

参与运算的两数各对应的二进位相与(两位都为1则为1)

60 & 13 结果为12

|

按位或

参与运算的两数各对应的二进位相或(两位有一个为1就为1)

60 | 13 结果为61

^

异或

参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1(两位不一样则为1)

60 ^ 13 结果为240

<< 

左移

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

4 << 2 结果为16

>> 

右移

右移n位就是除以2的n次方。
“a>>b”是把a的各二进位全部右移b位。

4 >> 2 结果为1

  1. //权限设计
  2. 100 ---4 r
  3. 010 ---2 w
  4. 001 ---1 x
  5. 100|010 = 110 //增加权限
  6. 110&100 = 100 //验证权限
  7. 110^100 = 010 // 删除权限
  8. const (
  9. _ = iota
  10. KB = 1 << (10 * iota)
  11. MB = 1 << (10 * iota)
  12. GB = 1 << (10 * iota)
  13. TB = 1 << (10 * iota)
  14. PB = 1 << (10 * iota)
  15. )

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

6 其他运算符
























运算符

术语

示例

说明

&

取地址运算符

&a

变量a的地址

取值运算符

a

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

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






































优先级

运算符

7

^      !  

6

*       /    %    <<    >>    &      &^

5

+      -     |      ^

4

==   !=   <    <=    >=    >

3

<-

2

&&

1

||

我们来做一个题吧,有一堆数字,其他数字都出现了两次,只有一个出现了一次,找出这个数字

  1. func main() {
  2. var ret int
  3. s1 := [...]int{ 1,1,2,2,3,4,4,5,6,5,6}
  4. for _,i := range s1{
  5. ret ^= i
  6. }
  7. fmt.Println(ret)
  8. }

发表评论

表情:
评论列表 (有 0 条评论,227人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Go语言运算符

    `一.原码、反码、补码` > 位运算时,需要知道几个概念,原码、反码、补码.正数在计算机中二进制还是原值,负数在计算机中存储的是补码 > 原码 >

    相关 Go语言运算符

    Go语言运算符 [GO语言学习教程][GO] [www.lsdcloud.com][] 运算符用于在程序运行时执行数学或逻辑运算。 Go 语言内置的运算符有:

    相关 Go语言笔记--常量与运算符

    1.常量的定义 1)常量的值再编译时就已经确定 2)常量的定义格式与变量基本相同 3)等号右侧必须是常量或者常量表达式 4)常量表达式中的函数必须是内置函数 例如