当前位置: 首页 > news >正文

运算符 - Go语言从入门到实战

运算符 - Go语言从入门到实战

算术运算符

假设A变量等于10,B变量等于20。

运算符描述实例
+相加A + B 输出结果 30
-相减A - B 输出结果 -10
*相乘A * B 输出结果 200
/相除B / A 输出结果 2
%求余B % A 输出结果 0
++⾃增A++ 输出结果 11
⾃减A-- 输出结果 9

特性:Go 语⾔没有前置的 ++,–。不允许 ++a 这种写法,Go语言遵循更严格的语法规则,不允许在变量名之前直接使用++或–。如果你想增加或减少一个变量的值,必须使用赋值运算符(如+=或-=)或者是普通的加法或减法运算符。可以写成a = a + 1或者a += 1。

⽐较运算符

操作符检查两个值是否相等示例结果
==检查两个值是否相等,如果相等返回 True,否则返回 False。False
!=检查两个值是否不相等,如果不相等返回 True,否则返回 False。True
>检查左边值是否大于右边值,如果左边值大于右边值返回 True,否则返回 False。False
<检查左边值是否小于右边值,如果左边值小于右边值返回 True,否则返回 False。True
>=检查左边值是否大于或等于右边值,如果左边值大于或等于右边值返回 True,否则返回 False。False
<=检查左边值是否小于或等于右边值,如果左边值小于或等于右边值返回 True,否则返回 False。True

这些比较简单,拎一个讲讲:
⽤ == ⽐较数组

  1. 相同维数且含有相同个数元素的数组才可以⽐较
  2. 每个元素都相同的才相等
package main  
import "fmt"  
func main() {  array1 := [3]int{1, 2, 3}  array2 := [3]int{1, 2, 3}  array3 := [3]int{4, 5, 6}  array4 := [3]int{4, 5, '6'}  fmt.Println(array1 == array2) // 输出: true  fmt.Println(array1 == array3) // 输出: false  fmt.Println(array3 == array4) // 输出: false  
}

逻辑运算符

运算符描述实例
&&逻辑 AND 运算符。如果两边的操作数都是 True,则条件 True,否则为 False。(A && B) 为 False
||逻辑 OR 运算符 。如果两边的操作数有⼀个 True,则条件 True,否则为 False。(A || B) 为 True
!逻辑 NOT 运算符 。如果条件为 True,则逻辑 NOT 条件 False,否则为 True。!(A && B) 为 True

位运算符

运算符描述实例
&按位与运算符"&"是双⽬运算符。 其功能是参与运算的两数各对应的⼆进位相与。(A & B) 结果为 12, ⼆进制为 0000 1100
|按位或运算符"|"是双⽬运算符。 其功能是参与运算的两数各对应的⼆进位相或。(A | B) 结果为 61, ⼆进制为 0011 1101
^按位异或运算符"^"是双⽬运算符。 其功能是参与运算的两数各对应的⼆进位相异或,当两对应的⼆进位相异时,结果为1。(A ^ B) 结果为 49, ⼆进制为 0011 0001
<<左移运算符”<<“是双⽬运算符。左移 n 位就是乘以 2 的 n 次⽅。 其功能把”<<“左边的运算数的各⼆进位全部左移若⼲位,由”<<"右边的数指定移动的位数,高位丢弃,低位补0。A << 2 结果为 240 ,⼆进制为 1111 0000
>>右移运算符”>>“是双⽬运算符。右移 n 位就是除以 2 的 n 次⽅。 其功能是把”>>“左边的运算数的各⼆进位全部右移若⼲位,”>>"右边的数指定移动的位数。A >> 2 结果为 15 ,⼆进制为 0000 1111

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

&^ 按位置零
1 &^ 0 – 1
1 &^ 1 – 0
0 &^ 1 – 0
0 &^ 0 – 0

package operator_test
import "testing"const (Readable = 1 << iotaWritableExecutable
)func TestCompareArray(t *testing.T) {a := [...]int{1, 2, 3, 4}b := [...]int{1, 3, 2, 4}//	c := [...]int{1, 2, 3, 4, 5}d := [...]int{1, 2, 3, 4}t.Log(a == b)//t.Log(a == c)t.Log(a == d)
}func TestBitClear(t *testing.T) {a := 7 //0111a = a &^ Readablea = a &^ Executablet.Log(a&Readable == Readable, a&Writable == Writable, a&Executable == Executable)
}

可能这里会对十进制数转二进制数有疑惑,举个例子:

将一个十进制数转换为二进制数,可以使用以下方法:

  1. 将十进制数除以 2,得到商和余数。
  2. 将商再次除以 2,得到新的商和余数。
  3. 不断重复上述步骤,直到商为 0。
  4. 将每一步的余数从低位到高位依次排列,得到二进制表示。

下面是将十进制数 61 转换为二进制数的步骤:

  1. 61 ÷ 2 = 30 余 1
  2. 30 ÷ 2 = 15 余 0
  3. 15 ÷ 2 = 7 余 1
  4. 7 ÷ 2 = 3 余 1
  5. 3 ÷ 2 = 1 余 1
  6. 1 ÷ 2 = 0 余 1

将每一步的余数从低位到高位依次排列,得到 61 的二进制表示为 0011 1101或111101。


学习Go语言主要是多练,多找些代码段写写,不懂可以私聊咨询。

欢迎关注云尔Websites CSDN博客

http://www.lryc.cn/news/176303.html

相关文章:

  • jupyterlab开发环境最佳构建方式
  • Qt_C++读写NFC标签Ntag支持windows国产linux操作系统
  • Web开发-基础知识扫盲
  • SpringMVC 学习(四)RestFul 风格
  • 消息中间件相关知识
  • JackJson多态
  • 孟晚舟最新发声!华为吹响人工智能的号角,发布“全面智能化”战略部署
  • open62541开发:添加sqlite3 历史数据库
  • 美国零售电商平台Target,值得入驻吗?如何入驻?
  • docker freeswitch mysql驱动相关
  • Chrome iframe 跨域失败
  • 【Vue】vue-cli一站式搭建SPA项目
  • CPP代码检查工具
  • 在SpringBoot中利用Redis实现互斥锁
  • vue3+eleement plus日历选择季度
  • 实现动态业务规则的方法(Java)
  • leetcodeTOP100(26)两数相加
  • performance_schema
  • 全新UI基于Thinkphp的最新自助打印系统/云打印小程序源码/附教程
  • Android 13.0 framework层系统手势增加上滑手势home事件功能(相当于Home键)
  • webp格式及其转成
  • echo cat find grep命令
  • Linux学习第20天:Linux按键输入驱动开发: 大道至简 量入为出
  • WordPress主题开发( 七)之—— 模版文件继承规则
  • Simulink 封装
  • 【AI视野·今日Robot 机器人论文速览 第三十六期】Tue, 19 Sep 2023
  • Java随笔
  • ARINC825规范简介
  • SQLAlchemy列参数的使用和query函数的使用
  • 产权未转移登记的离婚析产协议不能对抗债权人