09《Go语言入门》运算符和其他编程语言的区别
重要知识点:
- 很多人分不清前置自增和后置自增、前置自减和后置自减,而Go为了简单,只支持后置自增(a++)和后置自减(a–)。
- Go中数组(Array)为值类型,相同维数且含有相同个数元素的数组才可以比较,每个元素都相同才相等。
- 位运算符增加按位置零运算符
&^
,规则:右1为0,右0为O(Original)。
⚡️这是我纯手写的《Go语言入门》,源码+文章,手把手教你入门Go。看了你就会!
⚡️文章中所有的代码我都放到了 github.com/GanZhiXiong/go_learning 这个仓库中!
⚡️看文章时,对照仓库中代码学习效果更佳哦!
算术运算符
编程语言中常用的运算符为:
1 | + |
自增又分为前置自增和后置自增;
自减又分为前置自减和后置自减。
很多人在学习C语言的时候就经常分不清前置和后置的区别。
无前置自增和前置自减
而Go为了简单,只支持后置自增(a++)和后置自减(a–)
1 | func TestIncrementDecrement(t *testing.T) { |
比较运算符
常用的比较运算符为:
1 | == |
Go的比较运算符和其他编程语言是一致的。
数组的比较
但是某些类型的比较方式又和其他编程语言不一样,比如用==比较数组。
在Java、JavaScript中数组是引用类型,数组用==
比较时,比较的是两个数组的引用。
但是在Go中数组(Array)为值类型。
所以在比较数组的时候有如下规则:
- Go中相同维数且含有相同个数元素的数组才可以比较
- Go中数组每个元素都相同才相等
1 | func TestCompareArray(t *testing.T) { |
那么你可能会问,Go中数组是值传递,很多时候我们为了节省内存,就想使用引用传递怎么办?
我们可以使用切片来解决,后面我会单独写一篇文章讲解切片。你可以关注下,相信会对你有所帮助。
逻辑运算符
常用的逻辑运算符为:
1 | && |
位运算符
常用的位运算符为:
1 | & // 按位与运算符 |
和其他编程语言不同的是,Go增加了按位置零运算符。
按位置零运算符
1 | &^ |
该运算符的规则为:
- 只要右边的操作数位上为1,无论左边的操作数对应的位上为1还是0,结果都是0。(右1为0)
- 如果右边的操作数位上为0,结果为左边的操作数对应的位上的值。(右0为O(Original))
如果你知道原理了就不用记。其实原理也很简单。
原理就是:
go语言中按位取反写法是^, 所以 a&^b 其实是 a&(^b) 利用运算符优先级省略掉括号的写法而已。
1 | 1 &^ 0 // 1 |
还记得前面有一篇文章07《Go语言入门》测试用例、变量和常量里面讲到比特位常量吗!
这里我们可以使用按位置零运算符,快捷的设置文件类型
1 | const ( |
09《Go语言入门》运算符和其他编程语言的区别