【10】Go语言运算符及运算符的优先级

Python011

【10】Go语言运算符及运算符的优先级,第1张

运算符用于在程序运行时执行数学或逻辑运算。

1.算术运算符

Go 语言的算术运算符如图,假设A值为10,B值为20。

2.关系运算符

Go 语言的关系运算符如图,假设A值为10,B值为20。

3.逻辑运算符

Go 语言的逻辑运算符如图。假定A值为True,B值为False。

4.位运算符

位运算符对整数在内存中的二进制位进行操作。

位运算符比一般的算术运算符速度要快,而且可以实现一些算术运算符不能实现的功能。如果要开发高效率程序,位运算符是必不可少的。

Go 语言的位运算符如图。假定 A = 60,B = 13,其二进制数转换如下。

A = 0011 1100

B = 0000 1101

5.赋值运算符

Go 语言的赋值运算符如图。

6.其他运算符

Go 语言的其他运算符如图。

运算符的优先级

所谓优先级,就是当多个运算符出现在同一个表达式中时,先执行哪个运算符。

在开始说明贪心(Greedy)和懒惰(Lazy)之前,先解释规则表达式的量词符号(Quantifier Symbols),主要就下表6这个:

简单的说:

举一个例子看两者的差异:

第一种是贪心法,找到"ab"之后一直往后匹配,直到最后一个"c",所以其输出结果就是"abcabc"。

第二种是懒惰法,找到"ab"之后一直往后匹配,碰到第一个"c"就停止,所以这个例子里面,能找到两个匹配的子串"abc"和"abc"。

其实第二种的懒惰法可以用另外一种写法:

就是在"ab"之后对"非-c"的字符实现贪心法匹配,然后再碰到"c"就停止,这样达到同样的结果。

参考资料:

Greedy and lazy quantifiers

这篇文件比较详细的介绍了贪心法和懒惰法的匹配规则。

不过从具体应用来看,一种需求往往会有多个表达式的写法,所以对于懒惰法的写法也可以用其他的规则表达式来代替,所以如果你实在搞不清楚懒惰法的用处,也可以不用,只要自己找到新的表达法就行。

https://oktools.net/regex

https://github.com/cdoco/common-regex

https://blog.csdn.net/zfy1355/article/details/52959803