0
点赞
收藏
分享

微信扫一扫

Go 变量 运算符


go语言里面的运算符号包含了算术运算符逻辑运算符,和位运算符

算术运算符


Go 变量 运算符_数组

程序中+号的使用

1)当左右两边都是数值型时,则做加法运算

2)当左右两边都是字符串,则做字符串拼接


  var i = "1"
var j = "2"
sum := i + j
fmt.Println(sum)

12

 

⽐较运算符

Go 变量 运算符_算术运算符_02

对于某些特殊类型的是否可以比较,比如切片。

在其他语言里面,数组是引用类型,不是一个值类型,用==号在比较的时候是比较两个数组的引用,而不是比较里面的值是否相同。这一点在go语言里面是不一样的,如果两个数组的维数相同是可以比较的。


⽤ == ⽐较数组


  • 相同维数且含有相同个数元素的数组才可以⽐较(如果长度不一样数组比较就会出现编译错误)
  • 每个元素都相同的才相等

  var array1 = [5]int{1,2,3,4,6}
var array2 = [5]int{1,2,3,4,6}

println(array1 == array2)

true

逻辑运算符


Go 变量 运算符_运算符_03

位运算符

Go 变量 运算符_数组_04

按位清0运算符


与其他主要编程语⾔的差异


&^ 按位置零


1 &^ 0 -- 1


1 &^ 1 -- 0


0 &^ 1 -- 0


0 &^ 0 -- 0


对于左右两个操作数来说,只要右边的操作数为1,那么无论左边的位上的数字为0还是为1,那么结果都为0。

如果右边的二进制位为0,那么左边的二进制原来为什么,其结果就是什么。

const(
Readable = 1 << iota // 1
Writeable // 10
Executable // 100
)

func main() {
fmt.Println(Readable,Writeable,Executable)
a := 7 //0111
fmt.Println(a&Readable == Readable,a&Writeable == Writeable,a&Executable == Executable)
}


1 2 4
true true true

 现在适应按位清0运算符。

const(
Readable = 1 << iota // 1
Writeable // 10
Executable // 100
)

func main() {
fmt.Println(Readable,Writeable,Executable)
a := 7 //0111
a = a&^ Readable
fmt.Println(a) //110
fmt.Println(a&Readable == Readable,a&Writeable == Writeable,a&Executable == Executable)
}


1 2 4
6
false true true

可以看到对于其他的不受影响,这样代码易读和简洁明了。

举报

相关推荐

0 条评论