go破冰之旅·6·go中各种运算符(一)

news/2024/4/27 0:55:53/文章来源:https://blog.csdn.net/HYZX_9987/article/details/130347395

一次5-10分钟即可搞定,实用+效率!

回顾一下,上文:go破冰之旅·5·常量、变量、数据类型

提到了go中常量、变量、数据类型这些基础元素,本文来看看go中各种运算符是怎么玩的。

因篇幅及时长关系,本文对术运算符、赋值运算符、关系运算符做了详细介绍和常用用法及特俗案例进行了列举,其余在下一篇中进行介绍。

算术运算符

下面我们以具有特点的示例来对算术运算符进行说明和分析。

import "fmt"func main() {var a, b, c, d inta, b, c, d = 2, 1, 4, 7var (e = 9.9f = 1.1g = 1.11)// 常用四则运算 // fmt.Printf是一个通用打印函数 %v用来做通用参数占位打印fmt.Printf("%v + %v = %v\n", a, b, a+b)fmt.Printf("%v - %v = %v\n", a, b, a-b)fmt.Printf("%v * %v = %v\n", a, b, a*b)fmt.Printf("%v * %v = %v\n", e, f, e*f)fmt.Printf("%v / %v = %v\n", a, b, a/b)fmt.Printf("%v / %v = %v\n", a, c, a/c)fmt.Printf("%v / %v = %v\n", a, d, a/d)fmt.Printf("%v / %v = %v\n", e, f, e/f)fmt.Printf("%v / %v = %v\n", e, g, e/g)fmt.Printf("%v %% %v = %v\n", d, a, d%a) // 求余// 自增和自减a++fmt.Printf("a = %v\n", a)d--fmt.Printf("d = %v\n", d)
}

speed running:

2 + 1 = 32 - 1 = 12 * 1 = 29.9 * 1.1 = 10.892 / 1 = 22 / 4 = 02 / 7 = 09.9 / 1.1 = 99.9 / 1.11 = 8.918918918918927 % 2 = 1a = 3d = 6

可以看出,大多都是我们的预期结果,然而部分结构好像不对?来看看“不对”的行:

2 / 4 = 0

2 / 7 = 0

2除以4我们正常想要的当然是0.5,2除以7=0.2857.....是一串小数,它两的共同特点就是所得结果带有小数点,还有结果可以继续格式化的:

9.9 / 1.11 = 8.91891891891892

我们平时当然需要的是经过精确小数点之后的数,而不是一长串小数点后位数,对如上的情况在做运算时需要进行处理,可移步:go两数相除分析   

go中string、float、int等常见类型的转换可移步:go中常见基本类型数值转换方法

话说回来,如果你的功能中2 / 4 需要结果是0的情况,那么就要熟悉此算法的规则,就不需要过度处理。

赋值运算符

尽量避免过多的文字,同样我们直接上代码,在代码中直接直观的看到你想根据基本规则要翻译成的“结果表格”:

	// = 最常用的赋值预算符a, b := 1, 2 // 将1和2分别赋值给a和bc := a + b   // 新创建变量c,并将a+b的值赋给cfmt.Printf("c = %v\n", c)   // 3// += 求和后再赋值、-= 相减后再赋值、*= 相除后再赋值、/= 相除后再赋值、%= 求余后再赋值a += 1 // 相当于a = a+1fmt.Printf("a = %v\n", a)   // 2b -= 1 // 相当于b = b-1fmt.Printf("b = %v\n", b)   // 1a *= b // 相当于a = a*bfmt.Printf("a = %v\n", a)   // 2a /= 2 // 相当于a = a/2fmt.Printf("a = %v\n", a)   // 1c %= 2 // 相当于c = c%2fmt.Printf("c = %v\n", c)   // 1

逻辑运算符

所谓“逻辑运算符”,就是我们常见的“与”、“或”、“非”,也即“AND”、“OR”、“NOT”,对应在go中的关键符号分别是:&&、||、!

	a, b := false, true // a、b分别被设置为“假”、“真”var c bool          // 声明一个布尔类型的c,默认为bool类型的零值,也就是falsevar d = true// &&:两个都为真结果才为真//fmt.Printf("%v", a&b) // 注意,单个&表示取址,a&b是不成立的,会提示:Invalid operation: a&b (operator & is not defined on bool)fmt.Printf("a && b = %v\n", a && b)fmt.Printf("a && c = %v\n", a && c)fmt.Printf("b && d = %v\n", b && d)// ||:有一个为真结果就是真fmt.Printf("a || b = %v\n", a || b)fmt.Printf("a || c = %v\n", a || c)fmt.Printf("b || d = %v\n", b || d)// 结果求反运算fmt.Printf("!(a || b) = %v\n", !(a || b))fmt.Printf("!(a || c) = %v\n", !(a || c))fmt.Printf("!(b || d) = %v\n", !(b || d))fmt.Printf("!b = %v\n", !b) // 对b求反,值为false// 多个逻辑运算符,依次运算即可,如有括号,先算括号fmt.Printf("a || b || d = %v\n", a || b || d)fmt.Printf("a || c || d = %v\n", a || c || d)fmt.Printf("a || b && d = %v\n", a || b && d)fmt.Printf("a && b && d = %v\n", a && b && d)fmt.Printf("a || (b && d) = %v\n", a || (b && d))

speed running:

a && b = false
a && c = false
b && d = true
a || b = true
a || c = false
b || d = true
!(a || b) = false
!(a || c) = true
!(b || d) = false
!b = false
a || b || d = true
a || c || d = true
a || b && d = true
a && b && d = false
a || (b && d) = true

这次先到这里,下文继续哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_103808.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【k8s】ruoyi微服务迁移到k8s

书接上回【传统方式部署Ruoyi微服务】,此刻要迁移至k8s。 环境说明 31 master , 32 node1 , 33 node2迁移思路 交付思路: 其实和交付到Linux主机上是一样的,无外乎将这些微服务都做成了Docker镜像; 1、微服务数据层: MySQL、 R…

“井电双控”地下水远程计量设施-实现地下水资源合理利用

“井电双控”地下水远程计量设施(MGTR-W4122C)是针对取水计量控制系统开发智能终端产品。集预收费、流量监测、电量监测、余额提醒、欠费停机、无线传输、远程控制等多种功能于一体,并可根据项目需求选择实体IC卡和APP电子卡取水两种方式。其…

换肤实现及LayoutInflater原理

文章目录 背景实现换肤步骤解析插件 apk 的包信息获取插件 apk 的 Resources 对象替换资源 简单的插件化换肤实现和存在的问题换肤如何动态刷新?控件换肤刷新的性能考虑如何降低 xml 布局中 View 的替换成本LayoutInflater 原理LayoutInflater.Factory2 替换 View 小…

David Silver Reinforcement Learning -- Markov process

1 Introduction 这个章节介绍关键的理论概念。 马尔科夫过程的作用: 1)马尔科夫过程描述强化学习环境的方法,环境是完全能观测的; 2)几乎所有的RL问题可以转换成MDP的形式; 2 Markov Processes 2.1 Mark…

从源码全面解析LinkedBlockingQueue的来龙去脉

👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主📕系列专栏:Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙…

mall-swarm微服务商城系统

mall-swarm是一套微服务商城系统,采用了 Spring Cloud 2021 & Alibaba、Spring Boot 2.7、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心…

【Excel统计分析插件】上海道宁为您提供统计分析、数据可视化和建模软件——Analyse-it

Analyse-it是Microsoft Excel中的 统计分析插件 它为Microsoft Excel带来了 易于使用的统计软件 Analyse-it在软件中 引入了一些新的创新统计分析 Analyse-it与 许多Excel加载项开发人员不同 使用完善的软件开发和QA实践 包括单元/集成/系统测试 敏捷开发、代码审查 …

HCIA-RS实验-ENSP搭建一个基础的IP网络

HCIA-RS是华为认证网络工程师(Routing & Switching)的缩写。通过考取HCIA-RS证书,可以证明自己有能力设计、实现和维护小型网络。而HCIA-RS实验则是考试的一部分,是考生必须要完成的实践环节。这将是第一篇文章,后…

【Android Framework (八) 】- Service

文章目录 知识回顾启动第一个流程initZygote的流程system_serverServiceManagerBinderLauncher的启动AMS 前言源码分析1.startService2.bindService 拓展知识1:Service的两种启动方式对Service生命周期有什么影响?2:Service的启动流程3:Service的onStartCommand返回…

紧密联结玩家 | 2023 Google 游戏开发者峰会

玩家的选择是对游戏莫大的认可,重视玩家反馈并和他们建立联系是您的游戏取得成功的关键。我们也在努力创造更多机会,让您的游戏从琳琅满目的列表中脱颖而出,帮助您吸引更多用户。 上篇内容我们介绍了帮助您优化游戏性能的几大功能更新&#x…

❀五一劳动节来啦❀

今年“五一”,4月29日至5月3日放假调休,共5天。 如果你在5月4日到5月6日请假3天,加上5月7日周日,就可以形成9天的假期。 一,五一劳动节的由来⭐ 国际劳动节又称“五一国际劳动节”“国际示威游行日”(英语…

GPT详细安装教程-GPT软件国内也能使用

GPT (Generative Pre-trained Transformer) 是一种基于 Transformer 模型的自然语言处理模型,由 OpenAI 提出,可以应用于各种任务,如对话系统、文本生成、机器翻译等。GPT-3 是目前最大的语言模型之一,其预训练参数超过了 13 亿个…

python+vue 健康体检预约管理系统

该专门体检预约管理系统包括会员和管理员。其主要功能包括个人中心、会员管理、体检服务管理、类型管理、订单信息管理、取消订单管理、 体检报告管理、通知信息管理、交流论坛、系统管理等功能。 目 录 一、绪论 1 1.1研发背景和意义 2 1.2 国内研究动态 3 1.3论文主…

Cookies和Session案例-注册

1. 注册功能改进 1.1 service 将之前的注册案例的代码进行优化,将获取sqlsession工厂对象、获取sqlsession、获取mapper等操作从servlet中分离出来转变为三层架构的形式 在service目录下创建UserService public class UserService {SqlSessionFactory sqlSessionFa…

Docker compose-实现多服务、nginx负载均衡、--scale参数解决端口冲突问题

Docker compose-实现多服务、nginx负载均衡、--scale参数解决端口冲突问题 问题:scale参数端口冲突解决方法:nginx实现多服务、负载均衡修改docker-compose.yml配置新增nginx本地配置文件验证启动容器查看容器状态访问web应用 问题:scale参数…

Linux中的YUM源仓库和NFS文件共享服务(うたかたの夢)

YUM仓库源的介绍和相关信息 简介 yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。 yum由仓库和客户端组成,也就是整个yum由两部分组成&#xff0…

Python小姿势 - 知识点:

知识点: Python的字符串格式化 标题: Python字符串格式化实例解析 顺便介绍一下我的另一篇专栏, 《100天精通Python - 快速入门到黑科技》专栏,是由 CSDN 内容合伙人丨全站排名 Top 4 的硬核博主 不吃西红柿 倾力打造。 基础知识…

Docker的实际应用

一、 数据持久化 我们什么情况下要做数据持久化呢? 一定是在做容器之前先预判好哪些文件是要永久存储的, 而不会跟着它容器的一个生命周期而消失。 比如说配置文件、 日志文件、 缓存文件或者应用数据等等。 数据初始化有三种类型。 第一种 volumes&…

什么是分库分表?为什么需要分表?什么时候分库分表

不急于上手实战 ShardingSphere 框架,先来复习下分库分表的基础概念,技术名词大多晦涩难懂,不要死记硬背理解最重要,当你捅破那层窗户纸,发现其实它也就那么回事。 什么是分库分表 分库分表是在海量数据下&#xff0…

SCI论文自由投稿Vs专栏投稿,哪个更好中?

我们首先来看下以下几种期刊的发表方式: 正刊 正刊也就是自由投稿方式的发表方式,是期刊正常出版的期刊,比如一本SCI期刊是双月刊,一年出版6期,没有设定主题,包含多个研究方向的文章。每年按照半月/月/双…