11_12-Golang中的运算符
**Golang **中的运算符
主讲教师:(大地)
合作网站:www.itying.com** **(IT 营)
我的专栏:https://www.itying.com/category-79-b0.html
1、Golang 内置的运算符
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
2、算数运算符
| 运算符 | 描述 |
|---|---|
| + | 相加 |
| - | 相减 |
| * | 相乘 |
| / | 相除 |
| % | 求余=被除数-(被除数/除数)*除数 |
注意: ++(自增)和–(自减)在 Go 语言中是单独的语句,并不是运算符。
package main import ("fmt"
)func main() {fmt.Println("10+3=", 10+3) // =13fmt.Println("10-3=", 10-3) // =7 fmt.Println("10*3=", 10*3) // =30//除法注意:如果运算的数都是整数,那么除后,去掉小数部分,保留整数部分 fmt.Println("10/3=", 10/3) //3fmt.Println("10.0/3=", 10.0/3) //3.3333333333333335// 取余注意 余数=被除数-(被除数/除数)*除数fmt.Println("10%3=", 10%3) // =1fmt.Println("-10%3=", -10%3) // -1fmt.Println("10%-3=", 10%-3) // =1fmt.Println("-10%-3=", -10%-3) // =-1}
注意:在 golang 中,++ 和 – 只能独立使用 错误写法如下:
var i int = 8 var a int
a = i++ //错误,i++只能独立使用 a = i-- //错误, i--只能独立使用
注意:在 golang 中没有前++ 错误写法如下:var i int = 1
++i // 错误,在 golang 没有 前++
--i // 错误,在 golang 没有 前-- fmt.Println("i=", i)++ --正确写法:var i int = 1 i++
fmt.Println("i=", i)
3、关系运算符
| 运算符 | 描述 |
|---|---|
| == | 检查两个值是否相等,如果相等返回 True 否则返回 False。 |
| != | 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 |
| > | 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 |
| >= | 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 |
| < | 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 |
| <= | 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 |
package main import ("fmt"
)
func main() {//演示关系运算符的使用 var n1 int = 9var n2 int = 8 fmt.Println(n1 == n2) //false fmt.Println(n1 != n2) //true fmt.Println(n1 > n2) //true fmt.Println(n1 >= n2) //true fmt.Println(n1 < n2) //flase fmt.Println(n1 <= n2) //flase flag := n1 > n2 fmt.Println("flag=", flag)}
4、逻辑运算符
| 运算符 | 描述 |
|---|---|
| && | 逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。 |
| || | 逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。 |
| ! | 逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True。 |
package main import ("fmt"
)
func main() {//演示逻辑运算符的使用 && var age int = 40if age > 30 && age < 50 { fmt.Println("ok1")}if age > 30 && age < 40 { fmt.Println("ok2")}//演示逻辑运算符的使用 ||if age > 30 || age < 50 { fmt.Println("ok3")}if age > 30 || age < 40 { fmt.Println("ok4")}//演示逻辑运算符的使用 ! if age > 30 {fmt.Println("ok5")
}
if !(age > 30) { fmt.Println("ok6")}
}
逻辑运算符短路演示
package main import ("fmt"
)func test() bool { fmt.Println("test...") return true
}func main() {var i int = 10if i < 9 && test() { fmt.Println("ok...")}if i > 9 || test() { fmt.Println("hello...")}
}
5、赋值运算符
| 运算符 | 描述 |
|---|---|
| = | 简单的赋值运算符,将一个表达式的值赋给一个左值 |
| += | 相加后再赋值 |
| -= | 相减后再赋值 |
| *= | 相乘后再赋值 |
| /= | 相除后再赋值 |
| %= | 求余后再赋值 |
d := 8 + 2*8 // 赋值运算从右向左
fmt.Println(d)x := 10
x += 5 //x=x+5
fmt.Println("x += 5 的值:", x)x := 10
x -= 5 //x=x-5
fmt.Println("x -= 5 的值:", x)x := 10
x *= 5 //x=x*5
fmt.Println("x *= 5 的值:", x)x := 10.0
x /= 5
fmt.Println("x /= 5 的值:", x)x := 10
x %= 3
fmt.Println("x %= 3 的值:", x)
6、运算符练习
练习 1:有两个变量,**a **和 b,要求将其进行交换,最终打印结果
a := 9
b := 2t := a
a = b //
b = t //
fmt.Printf("交换后的情况是 a = %v , b=%v \n", a, b)
练习 2:假如还有 **100 **天放假,问:**xx **个星期零 **xx **天
var days int = 100var week int = days / 7 var day int = days % 7fmt.Printf("%d 个星期零%d 天\n", week, day)
练习 3:定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9(华氏温度-100),*
请求出华氏温度对应的摄氏温度
var huashi float32 = 134.2var sheshi float32 = 5.0 / 9 * (huashi - 100)fmt.Printf("%v 对应的摄氏温度=%v \n", huashi, sheshi)
7、位运算符(了解)
位运算符对整数在内存中的二进制位进行操作。
| 运算符 | 描述 |
|---|---|
| & | 参与运算的两数各对应的二进位相与。 (两位均为 1 才为 1) |
| | | 参与运算的两数各对应的二进位相或。 (两位有一个为 1 就为 1) |
| ^ | 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为 1。 (两位不一样则为 1) |
| << | 左移 n 位就是乘以 2 的 n 次方。 “a<<b”是把 a 的各二进位全部左移 b 位,高位丢弃,低位补 0。 |
| >> | 右移 n 位就是除以 2 的 n 次方。 “a>>b”是把 a 的各二进位全部右移 b 位。 |
package main import "fmt" func main() {/*& 两位均为 1 才为 1
| 两位有一个为 1 就为 1^ 相异或 两位不一样则为 1
<< 左移 n 位就是乘以 2 的 n 次方。 “a<<b”是把 a 的各二进位全部左移 b 位,高位丢弃,低位补 0。>> 右移 n 位就是除以 2 的 n 次方。
*/var a int = 5 // 101 var b int = 2 // 010fmt.Println("a&b=", a&b) // 000 值 0fmt.Println("a|b=", a|b) // 111 值 7fmt.Println("a^b=", a^b) // 111 值 7fmt.Println("5>>2=", a>>b) // 5 右移 2 位 1fmt.Println("5<<2=", a<<b) // 5 左移 2 位 10100fmt.Println("5<<1=", 5<<1) // 1010fmt.Println("5>>1=", 5>>1) // 10fmt.Println("7>>2=", 7>>2) // 1}
相关文章:
11_12-Golang中的运算符
**Golang **中的运算符 主讲教师:(大地) 合作网站:www.itying.com** **(IT 营) 我的专栏:https://www.itying.com/category-79-b0.html 1、Golang 内置的运算符 算术运算符关系运算符逻辑运…...
k8s-ingress特性 9
TLS加密 创建证书 测试访问 auth认证 创建认证文件 rewrite重定向 进入域名时,会自动重定向到hostname.html 示例: 测试 版本的升级迭代,之前利用控制器进行滚动更新,在升级过程中无法做到快速回滚 更加平滑的升级࿱…...
【redis】redis系统实现发布订阅的标准模板
目录 简介参数配置代码模板 简介 Redis发布订阅功能是Redis的一种消息传递模式,允许多个客户端之间通过消息通道进行实时的消息传递。在发布订阅模式下,消息的发送者被称为发布者(publisher),而接收消息的客户端被称为…...
Python 时间日期处理库函数
标准库 datetime >>> import datetime >>> date datetime.date(2023, 12, 20) >>> print(date) 2023-12-20 >>> date datetime.datetime(2023, 12, 20) >>> print(date) 2023-12-20 00:00:00 >>> print(date.strfti…...
第二十二章 : Spring Boot 集成定时任务(一)
第二十二章 : Spring Boot 集成定时任务(一) 前言 本章知识点: 介绍使用Spring Boot内置的Scheduled注解来实现定时任务-单线程和多线程;以及介绍Quartz定时任务调度框架:简单定时调度器(Simp…...
关于“Python”的核心知识点整理大全32
目录 12.6.4 调整飞船的速度 settings.py ship.py alien_invasion.py 12.6.5 限制飞船的活动范围 ship.py 12.6.6 重构 check_events() game_functions.py 12.7 简单回顾 12.7.1 alien_invasion.py 12.7.2 settings.py 12.7.3 game_functions.py 12.7.4 ship.py …...
【krita】实时绘画 入门到精通 海报+电商+装修+人物
安装插件 首先打开comfyUI,再打开krita,出现问题提示, 打开 cd custom_nodes 输入命令 安装控件 git clone https://github.com/Acly/comfyui-tooling-nodes.git krita基础设置 设置模型 设置lora (可设置lora强度 增加更多…...
云原生系列2-CICD持续集成部署-GitLab和Jenkins
1、CICD持续集成部署 传统软件开发流程: 1、项目经理分配模块开发任务给开发人员(项目经理-开发) 2、每个模块单独开发完毕(开发),单元测试(测试) 3、开发完毕后,集成部…...
50ms时延工业相机
华睿工业相机A3504CG000 参数配置: 相机端到端理论时延:80ms 厂家同步信息,此款设备帧率上线23fps,单帧时延:43.48ms,按照一图缓存加上传输显示的话,厂家预估时延在:80ms 厂家还有…...
CPU缓存一致性问题
什么是可见性问题? Further Reading :什么是可见性问题? 缓存一致性 内存一致性 内存可见性 顺序一致性区别 CPU缓存一致性问题 由于CPU缓存的出现,很好地解决了处理器与内存速度之间的矛盾,极大地提高了CPU的吞吐能…...
35道HTML高频题整理(附答案背诵版)
1、简述 HTML5 新特性 ? HTML5 是 HTML 的最新版本,它引入了很多新的特性和元素,以提供更丰富的网页内容和更好的用户体验。以下是一些主要的新特性: 语义元素:HTML5 引入了新的语义元素,像 <article&g…...
【powershell】Windows环境powershell 运维之历史文件压缩清理
🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁&am…...
【Linux】Linux线程概念和线程控制
文章目录 一、Linux线程概念1.什么是线程2.线程的优缺点3.线程异常4.线程用途5.Linux进程VS线程 二、线程控制1.线程创建2.线程终止3.线程等待4.线程分离 一、Linux线程概念 1.什么是线程 线程是进程内的一个执行流。 我们知道,一个进程会有对应的PCB,…...
Flink cdc3.0同步实例(动态变更表结构、分库分表同步)
文章目录 前言准备flink环境docker构建mysql、doris环境数据准备 通过 FlinkCDC cli 提交任务整库同步同步变更路由变更路由表结构不一致无法同步 结尾 前言 最近Flink CDC 3.0发布, 不仅提供基础的数据同步能力。schema 变更自动同步、整库同步、分库分表等增强功…...
国产Apple Find My认证芯片哪里找,伦茨科技ST17H6x芯片可以帮到您
深圳市伦茨科技有限公司(以下简称“伦茨科技”)发布ST17H6x Soc平台。成为继Nordic之后全球第二家取得Apple Find My「查找」认证的芯片厂家,该平台提供可通过Apple Find My认证的Apple查找(Find My)功能集成解决方案。…...
肺癌相关知识
写在前面 大概想了解下肺癌相关的知识,开此贴做记录,看看后续有没有相关的生信文章思路。 综述 文章名期刊影响因子Lung cancer immunotherapy: progress, pitfalls, and promisesMol Cancer37.3 常见治疗手段有surgery, radiation therapy, chemoth…...
ChimeraX使用教程-安装及基本操作
ChimeraX使用教程-安装及基本操作 1、访问https://www.cgl.ucsf.edu/chimerax/download.html进行下载,然后安装 安装完成后,显示界面 2、基本操作 1、点击file,导入 .PDB 文件。 (注:在 alphafold在线预测蛋白》点…...
【小黑嵌入式系统第十一课】μC/OS-III程序设计基础(一)——任务设计、任务管理(创建基本状态内部任务)、任务调度、系统函数
上一课: 【小黑嵌入式系统第十课】μC/OS-III概况——实时操作系统的特点、基本概念(内核&任务&中断)、与硬件的关系&实现 文章目录 一、任务设计1.1 任务概述1.2 任务的类型1.2.1 单次执行类任务(运行至完成型&#…...
Redis一些常用的技术
文章目录 第1关:Redis 事务与锁机制第2关:流水线第3关:发布订阅第4关:超时命令第5关:使用Lua语言 第1关:Redis 事务与锁机制 编程要求 根据提示,在右侧编辑器Begin-End补充代码,根据…...
基于QPainter 绘图图片绕绘制设备中心旋转
项目地址:https://gitcode.com/m0_45463480/QPainter/tree/main 获取途径:进入CSDN->GitCode直接下载或者通过git拉取仓库内容。 QPainter是Qt框架中的一个类,用于在QWidget或QPixmap等设备上进行绘图操作。它提供了丰富的绘图功能,可以用于绘制线条、图形、文本等。Q…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
