Go 变量 运算符

网友投稿 634 2022-11-30

Go 变量 运算符

Go 变量 运算符

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

算术运算符

程序中+号的使用

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

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

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

⽐较运算符

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

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

⽤ == ⽐较数组

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

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

逻辑运算符

位运算符

按位清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 4true 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 46false true true

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于自定义校验注解(controller、method、(groups)分组的使用)
下一篇:解决@Validated注解无效,嵌套对象属性的@NotBlank无效问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~