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

GO 语言学习 之 运算符号

算术运算符:

二元的运算符:+ - * / %

        四则运算没啥好说的,从小就开始学习,最后一个 % 表示 求余数或者取模运算。

package mainimport "fmt"func main() {a := 1 + 2b := a - 1c := a * bd := c / ae := c % 3fmt.Println("a := 1 + 2 的结果是:", a)fmt.Println("b := a - 1 的结果是:", b)fmt.Println("c := a * b 的结果是:", c)fmt.Println("d := c / a 的结果是:", d)fmt.Println("e := c % 3 的结果是:", e)
}

一元运算符:++ -- 

  • 自增(++:将变量的值增加 1。

  • 自减(--:将变量的值减少 1。

  • 它们只能作为独立的语句使用,不能出现在表达式中。例如,a = b++ 或 c = --d 这样的写法在 Go 语言中是不允许的。

package mainimport "fmt"func main() {var i int = 1i++fmt.Println("i++ 的结果:", i)i--fmt.Println("i-- 的结果:", i)
}

关系运算符

关系运算符是用于比较两个操作数的值,并返回一个布尔值。

package mainimport "fmt"func main() {var a int = 10var b int = 20fmt.Println("a == b : ", a, b, a == b)fmt.Println("a != b : ", a, b, a != b)fmt.Println("a > b : ", a, b, a > b)fmt.Println("a < b : ", a, b, a < b)fmt.Println("a >= b : ", a, b, a >= b)fmt.Println("a <= b : ", a, b, a <= b)
}

逻辑运算符

        逻辑运算符的操作数是布尔表达式,即表达式的结果是 true 或 false。C语言里面,表达式的值如果是零值则为false,非零值则为true。在这里行不通了,必须是操作的必须是布尔表达式,不能直对一个变量进行判断了!!!

package mainimport "fmt"func main() {a := trueb := falsec := trued := falsefmt.Println("逻辑与(&&)运算:")fmt.Println(a, b, a && b)fmt.Println(a, c, a && c)fmt.Println(a, d, a && d)fmt.Println(b, d, b && d)fmt.Println("逻辑或(||)运算:")fmt.Println(a, b, a || b)fmt.Println(a, c, a || c)fmt.Println(a, d, a || d)fmt.Println(b, d, b || d)fmt.Println("逻辑非(!)运算:")fmt.Println(a, !a)fmt.Println(b, !b)
}

位运算符 

        位运算就是将一个变量存放的数值转换成二进制的01表示的形式,然后再对每一个二进制位进行计算。主要包括 按位与(&)、按位或(|)、按位(^) 和 位清空(&^)。

        按位与(&) :相同位置的二进制数值,全为1,则值为1,否则为 0

        按位或(|):相同位置的二进制数值,全为0,则值为0,否则为 1

        按位(^):相同位置的二进制数值,不同,则值为1,否则为 0

        按位清空(&^):

        第一种解释方法:

        这里其实有个概念我给补充一下,=前面的值可以成为原始值,后面的值成为掩码,这么一来就好解释了。对于掩码来说如果二进制位的值为 0, 则取原始值对应的二进制位的数值,如果为1,则对应位的值为0

        第二种解释方法:

        我自己亲自计算了几次结果都正确,数值及算法,帮助理解。

        a &^ = b 相当于 a = a & b ^ a 也相当于 a ^ b & a

package mainimport "fmt"func main() {a := 10b := 11fmt.Println(a, " & ", b, "=", a & b)fmt.Println(a, " | ", b, "=", a | b)fmt.Println(a, " ^ ", b, "=", a ^ b)fmt.Println(a, " &^ ", b, "=", a &^ b)
}

赋值运算符

        赋值运算符是最常用的运算符了,其功能就是修改已经声明过的变量所存放的内容。赋值运算符也有很多结合算术、逻辑、位运算符的用法,思路都是一样的,以 += 为例。例如计算 a += 1, 可以等价于 a = a + 1,即先计算 a + 1 的值,再将 a + 1 的结果,放入 a 中。

package mainimport "fmt"func main() {var a inta = 10fmt.Println("执行 a = 10 后 : a = ", a)a += 10fmt.Println("执行 a += 10 后 : a = ", a)a -= 1fmt.Println("执行 a -= 1 后 : a = ", a)a *= 2fmt.Println("执行 a *= 2 后 : a = ", a)a /= 3fmt.Println("执行 a /= 3 后 : a = ", a)a %= 10fmt.Println("执行 a %= 10 后 : a = ", a)a <<= 1fmt.Println("执行 a <<= 1 后 : a = ", a)a >>= 1fmt.Println("执行 a >>= 1 后 : a = ", a)a &= 10fmt.Println("执行 a &= 10 后 : a = ", a)a |= 10fmt.Println("执行 a |= 10 后 : a = ", a)a ^= 10fmt.Println("执行 a %= 10 后 : a = ", a)a %= 10fmt.Println("执行 a %= 10 后 : a = ", a)a %= 10fmt.Println("执行 a %= 10 后 : a = ", a)}

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

相关文章:

  • YOLOv13发布 | 超图高阶建模+轻量化模块,保证实时性的情况下,检测精度再创新高!
  • OpenCV——cv::floodFill
  • 环保法规下的十六层线路板创新:猎板 PCB 如何实现无铅化与可持续制造
  • 玛哈特机械矫平机:精密制造的“应力消除师”与“平整度雕刻家”
  • IDEA高效开发指南:JRebel热部署
  • EloqCloud for KV 初体验:兼容redis的云原生KV数据库
  • 机器学习基础 线性回归与 Softmax 回归
  • zlib库使用
  • 51c嵌入式~CAN~合集2
  • Java动态调用DLL
  • 数据结构?AVL树!!!
  • 2200、找出数组中的所有K近邻下标
  • SoC仿真环境中自定义printf函数的实现
  • Sivers毫米波产品系列全景图:覆盖通信、工业、交通、航天
  • Android14音频子系统-Audio HAL分析
  • 【Elasticsearch】es初识,在项目架构中的用途,与mysql和kafka的配合使用,
  • 基于Kafka实现企业级大数据迁移的完整指南
  • 数据结构篇-二分图
  • 【世纪龙科技】新能源汽车VR虚拟体验展示馆-解锁认知新维度
  • 计算机网络 网络层:数据平面(二)
  • Excel基础:选择和移动
  • java 对接ETH(以太坊) 交易相关资料
  • 量学云讲堂2025朱永海慢牛开启第58期视频课程
  • 物流涂层科技赋能仓储:创冷科技引领高温环境下的仓储物流安全升级
  • 了解笔记本电脑制造:从品牌到代工厂的全产业链
  • GaussDB实例级自动备份策略:构建数据安全的“自动防护网”
  • 设计模式:揭秘Java原型模式——让复杂对象的创建不再复杂
  • 气象数据技术解析:格点模型与区域站观测的原理、差异及数据接口获取
  • 【笔记】Docker 配置阿里云镜像加速(公共地址即开即用,无需手动创建实例)
  • 《解码音频:从基础到未来的听觉探索》