Go语言中的保留字和运算符详解
前言
🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业,阿里云博客专家
😉😉 💕 座右铭: 先努力成长自己,再帮助更多的人,一起加油进步
🍺🍺🍺 💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘
文章目录
- 前言
- 一. 保留字
- 二. 运算符
- 2.1 算术运算符
- 2.2 关系运算符
- 2.3 逻辑运算符
- 2.4 位运算符
- 2.5 赋值运算符
- 三. 优先级
- 总结
一. 保留字
Go语言中有25个保留关键字
(keyword),保留关键字不能被用来作为常量,变量,函数名。
所有保留字如下:
这 25 个关键字按照作用可以分为 3 类,分别为包管理、程序实体声明与定义与程序流程控制:
包管理(2个):import package程序实体声明与定义(8个):chan const func interface map struct type var程序流程控制(15个):break case continue default defer else fallthrough for go goto if range return select switch
除了保留关键字外,外另还提供了36个预定的标识符,其包括基础数据类型和系统内嵌函数。
二. 运算符
我们常说程序=算法+数据,算法指的是利用计算机解决问题的处理步骤,简而言之,算法就是解决问题的步骤。 从加法指令到上万台服务器组成的分布式计算集群,都是由算法去处理不同层次存储设备里的数据。
有句话说: 硬件的方向是物理,软件的方式是数学,一般学数学专业的,最后会成为管理程序员干活的。
go语言常见的运算符分类:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 其他运算符
2.1 算术运算符
假定 a :=10 b:=20
运算符 | 描述 | 实例 |
---|---|---|
+ | 相加 | A + B 输出结果 30 |
- | 相减 | A - B 输出结果 -10 |
* | 相乘 | A * B 输出结果 200 |
/ | 相除 | B / A 输出结果 2 |
% | 求余 | B % A 输出结果 0 |
++ | 自增 | A++ 结果是11 |
– | 自减 | A-- 结果是9 |
用实例来验证算术运算符:
package mainimport "fmt"func main() {var a int = 10var b int = 20var C intC = a + bfmt.Println("a+b=",C)C = a - bfmt.Println("a-b=",C)C = a * bfmt.Println("a*b=",C)C = a / bfmt.Println("a/b=",C)C = a % bfmt.Println("a%b=",C)a++fmt.Println("A++ =",a)}
2.2 关系运算符
下表列出了所有Go语言的关系运算符。假定 A 值为 10,B 值为 20:
运算符 | 描述 | 实例 |
---|---|---|
== | 检查两个值是否相等,如果相等返回 True 否则返回 False。 | (A == B) 为 False |
!= | 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 | (A != B) 为 True |
> | 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 | (A > B) 为 False |
< | 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 | (A < B) 为 True |
>= | 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 | (A >= B) 为 False |
<= | 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 | (A <= B) 为 True |
package mainimport "fmt"func main() {var a int = 10var b int = 20fmt.Println(a == b) //falsefmt.Println(a < b) //truefmt.Println(a > b) //falsefmt.Println(a != b) //true}
2.3 逻辑运算符
&&
逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。||
逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。!
逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True。
package mainimport "fmt"func main() {var(a = trueb = false)fmt.Println("a && b" ,a && b)fmt.Println("a || b" ,a || b)fmt.Println("!a" ,!a)}
运行结果:
2.4 位运算符
位运算符对整数在内存中的二进制位进行操作
运算符 | 描述 | 例子 |
---|---|---|
& | 参与运算的两数各对应的二进位相与。(两位均为1才为1) | a &b 0101 & 0011 = 0001 |
| | 参与运算的两数各对应的二进位相或。(两位有一个为1就为1) | a|b 0101 |0011 =0111 |
^ | 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 | 0101 ^ 0011=0110 |
<< | 左移n位就是乘以2的n次方。“a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0 | 0001<<3 =1000 |
>> | 右移n位就是除以2的n次方。“a>>b”是把a的各二进位全部右移b位。 | 1010 >> 2 =0011 |
func main() {var a uint = 60 /* 60 = 0011 1100 */var b uint = 13 /* 13 = 0000 1101 */var c uint = 0c = a & b /* 12 = 0000 1100 */fmt.Printf("Line 1 - Value of c is %d\n", c )c = a | b /* 61 = 0011 1101 */fmt.Printf("Line 2 - Value of c is %d\n", c )c = a ^ b /* 49 = 0011 0001 */fmt.Printf("Line 3 - Value of c is %d\n", c )c = a << 2 /* 240 = 1111 0000 */fmt.Printf("Line 4 - Value of c is %d\n", c )c = a >> 2 /* 15 = 0000 1111 */fmt.Printf("Line 5 - Value of c is %d\n", c )
}
运行结果:
2.5 赋值运算符
运算符 | 描述 |
---|---|
= | 简单的赋值运算符,将一个表达式的值赋给一个左值 |
+= | 相加后再赋值 |
-= | 相减后再赋值 |
*= | 相乘后再赋值 |
/= | 相除后再赋值 |
%= | 求余后再赋值 |
<<= | 左移后赋值 |
>>= | 右移后赋值 |
&= | 按位与后赋值 |
= | 按位或后赋值 |
^= | 按位异或后赋值 |
package mainimport "fmt"func main() {var a int = 20var c intc=afmt.Println(c) //20c += afmt.Println(c) //40c *=afmt.Println(c) //800
}
三. 优先级
下表为各运算符的优先级示图,优先级从高到低:
优先级 | 类别 | 运算符 |
---|---|---|
1 | 括号运算符 | () |
2 | 单目运算符 | !、++、– |
3 | 算数运算符 | *、/、% |
4 | +、- | |
5 | 位移运算符 | >>、<< |
6 | 关系运算符 | <、<=、>、>= |
7 | ==、!= | |
8 | 按位与 | & |
9 | 按位异或 | ^ |
10 | 按位或 | | |
11 | 逻辑与 | && |
12 | 逻辑或 | || |
13 | 赋值运算符 | =、+=、-=、*=、/=、 %=、 >=、 <<=、&=、^=、 |
package mainimport "fmt"func main() {var a = 3var b = 4var c = 12fmt.Println(a+b*c) //51fmt.Println((a+b)*c)//84
}
从上述代码中可以看到 a+b*c
是先运算b*c +a
,结果等于51
总结
Go 语言的运算符一般分为算数运算符、关系运算符、逻辑运算符、位运算符以及赋值运算符四大类, 你学会了吗?
💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
💕 博客主页:mufeng.blog.csdn.net
💕 本文由沐风晓月原创,首发于CSDN博客
💕 全力以赴,持续学习,不负如来不负卿
💕 喜欢的话记得点赞收藏哦
相关文章:
Go语言中的保留字和运算符详解
前言 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业,阿里云博客专家 😉😉 💕 座右铭: 先努力成长自己ÿ…...
Linux编译之(1)C语言基础
Linux编译之C语言基础 Author:Once Day Date:2023年3月11日 漫漫长路,才刚刚开始… 1.概述 在Linux下开发多源文件的C代码文件,是一定要了解Makefile的,虽然现在构建工具很多,但学习的一开始࿰…...
CPU平均负载高问题定位分析
一、Linux操作系统CPU平均负载 1.1什么是CPU平均负载 1.2 怎么查看平均负载数值 二、Linux操作系统CPU使用率和平均负载区别 CPU使用率和平均负载区别 三、阿里云Linux操作系统CPU压测环境准备 3.1 核心命令应用场景 3.2 模拟生产环境出现的多种问题环境准备 分析工具安…...
Python蓝桥杯训练:基本数据结构 [二叉树] 中
Python蓝桥杯训练:基本数据结构 [二叉树] 中 文章目录Python蓝桥杯训练:基本数据结构 [二叉树] 中一、[翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/)二、[对称二叉树](https://leetcode.cn/problems/symmetric-tree/)三、[二叉树的最…...
读取 DTC 信息服务 (0x19) – UDS 协议
总目录链接>> AutoSAR入门和实战系列总目录 0x19读取 DTC 信息服务概述 读取 DTC 信息服务在 UDS 协议中用于从车辆或特定 ECU 或节点读取 DTC。UDS 协议的主要任务之一是故障诊断。每当车辆发生任何故障时,与该故障相对应的诊断故障代码(DTC&a…...
Hive 分区表新增字段 cascade
背景 在以前上线的分区表中新加一个字段,并且要求添加到指定的位置列。 模拟测试 加 cascade 操作 创建测试表 create table if not exists sqltest.table_add_column_test(org_col1 string comment 原始数据1,org_col2 string comment 原始数据2 ) comment 增…...
【Java版oj】day08两种排序方法、最小公倍数
目录 一、两种排序方法 (1)原题再现 (2)问题分析 (3)完整代码 二、最小公倍数 (1)原题再现 (2)问题分析 (3)完整代码 一、两种…...
FinOps,从概念到落地 | UGeek大咖说第一期直播回顾(上)
2023年2月28日,由优维科技联合FinOps产业推进方阵举办了第1期「UGeek大咖说-极致用云共济FinOps」线上直播活动,来自中国信通院及美图公司技术专家共同带来了一场精彩的技术视听盛宴。 直 播 背 景 目前,许多以“上云”为数字化转型路径的企…...
k8s java程序实现kubernetes Controller Operator 使用CRD 学习总结
k8s java程序实现kubernetes Controller & Operator 使用CRD 学习总结 大纲 原理Controller 与 Operator自定义资源定义 CRD ( CustomResourceDefinition)kubernetes-client使用java fabric8io/kubernetes-client操作k8s 原生资源使用java abric8io/kubernetes-clientt操…...
Unity笔记:修改代码执行的默认打开方式
使用 External Tools 偏好设置可设置用于编写脚本、处理图像和进行源代码控制的外部应用程序。 External Script Editor:选择 Unity 应使用哪个应用程序来打开脚本文件。Unity 会自动将正确的参数传递给内置支持的脚本编辑器。Unity 内置支持 Visual Studio Commun…...
Linux IPC:匿名管道 与 命名管道
目录一、管道的理解二、匿名管道三、命名管道四、管道的通信流程五、管道的特性进程间通信方式有多种,本文介绍的是管道,管道分为匿名管道和命名管道。 一、管道的理解 生活中的管道用来传输资源,例如水、石油之类的资源。而进程间通信的管道…...
阿里研发工程师JAVA暑期实习一面
文章目录先说一下我自己的情况面试过程总结先说一下我自己的情况 我就读于湖南大学,软件工程专业,现在大三下 很巧的是,我在大二的时候就在相同的时间面过相同的部门和相同的岗位,所以我没有做笔试就直接让我去面试了。我当时还纳…...
第十四届蓝桥杯三月真题刷题训练——第 11 天
目录 第 1 题:卡片 题目描述 运行限制 第 2 题:路径_dpgcd 运行限制 第 3 题:字符统计 问题描述 输入格式 输出格式 样例输入 样例输出 评测用例规模与约定 运行限制 第 4 题:费用报销 第 1 题:卡片 题…...
机器学习入门——线性回归
线性回归什么是线性回归?回归分析:线性回归:回归问题求解单因子线性回归简单实例评估模型表现可视化模型展示多因子线性回归什么是线性回归? 回归分析: 根据数据,确定两种或两种以上变量间相互依赖的定量…...
Microsoft Word 远程代码执行漏洞(CVE-2023-21716)
本文转载于: https://mp.weixin.qq.com/s?__bizMzI5NTUzNzY3Ng&mid2247485476&idx1&sneee5c7fd1c4855be6441b8933b10051e&chksmec535547db24dc516d013d3d76097e985aaad7f10f82f15b4e355a97af75fd333acdab6232af&mpshare1&scene23&srci…...
Android kotlin 系列讲解(数据篇)SharedPreferences存储及测试
文章目录 一、什么是SharedPreferences1、将数据存储到SharedPreferences中2、从SharedPreferences中读取数据二、登录使用SharedPreferences一、什么是SharedPreferences SharedPreferences是使用键值对的方式来存储数据的。也就是说,当保存一条数据的时候,需要给这条数据提…...
一文了解Web Worker
一、概述 众所周知,JavaScript最初设计是运行在浏览器中的,为了防止多个线程同时操作DOM带来的渲染冲突问题,所以JavaScript执行器被设计成单线程。但是随着前端技术的发展,JavaScript要处理的工作也越来越复杂,当我们…...
接口文档包含哪些内容?怎么才能写好接口文档?十年测试老司机来告诉你
目录 接口文档结构 参数说明 示例 错误码说明 语言基调通俗易懂 及时更新与维护 总结 那么我们该如何写好一份优秀的接口文档呢? 接口文档结构 首先我们要知道文档结构是什么样子的。接口文档应该有清晰明确的结构,以便开发人员能快速定位自己需…...
java面试八股文之------Java并发夺命23问
java面试八股文之------Java并发夺命23问👨🎓1.java中线程的真正实现方式👨🎓2.java中线程的真正状态👨🎓3.如何正确停止线程👨🎓4.java中sleep和wait的区别👨…...
CANoe中使用CAPL刷写流程详解(Trace图解)(CAN总线)
🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…...
【MySQL】002 -- 日志系统:一条SQL更新语句是如何执行的
此文章为《MySQL 实战 45 讲》的学习笔记,其课程链接可参见:MySQL实战45讲_MySQL_数据库-极客时间 目录 一、日志系统 1、重做日志:redo log(引擎层) 2、归档日记:binlog(Server层) …...
C++---背包模型---数字组合(每日一道算法2023.3.14)
注意事项: 本题是"动态规划—01背包"的扩展题,优化思路不多赘述,dp思路会稍有不同,下面详细讲解。 题目: 给定 N个正整数 A1,A2,…,AN,从中选出若干个数,使它们的和为 M,…...
并查集(不相交集)详解
目录 一.并查集 1.什么是并查集 2.并查集的基本操作 3.并查集的应用 4.力扣上的题目 二.三大操作 1.初始化 2.查找 3.合并 三.省份数量 1.题目描述 2.问题分析 3.代码实现 四.冗余连接 1.题目描述 2.问题分析 3.代码实现 一.并查集 1.什么是并查集 并查集&…...
10个最频繁用于解释机器学习模型的 Python 库
文章目录什么是XAI?可解释性实践的步骤技术交流1、SHAP2、LIME3、Eli54、Shapash5、Anchors6、BreakDown7、Interpret-Text8、aix360 (AI Explainability 360)9、OmniXAI10、XAI (eXplainable AI)XAI的目标是为模型的行为和决定提供有意义的解释,本文整理…...
final关键字:我偏不让你继承
哈喽,小伙伴们大家好,我是兔哥呀,今天就让我们继续这个JavaSE成神之路! 这一节啊,咱们要学习的内容是Java所有final关键字。 之前呢,我们学习了继承,这大大提高了代码的灵活性和复用性。但是总…...
8大主流编程语言的适用领域,你可能选错了语言
很多人学编程经常是脑子一热然后就去网上一搜资源就开始学习了,但学到了后面发现目前所学的东西并不是自己最喜欢的,好像自己更喜欢另一个技术,感觉自己学错了,于是乎又去学习别的东西。 结果竹篮打水一场空,前面所付…...
关于Python库的问题
关于Python库的问题 问题1: ModuleNotFoundError: No module named ‘requests’ Python库 Pycharm使用Requests库时报错: No module named requests’解决方法 未安装requests库,使用"pip install requests"命令安装 依然提示P…...
好记性不如烂笔头(2)
概述:用来记录一些小技巧。 1.查看MyBatis执行的sql 类:org.apache.ibatis.mapping.MappedStatement方法:getBoundSql(Object parameterObject)在IDEA的Evaluate Expression查看sql:boundSql.getSql() 2.maven仓库地址为https&…...
Java for循环嵌套for循环,你需要懂的代码性能优化技巧
前言 本篇分析的技巧点其实是比较常见的,但是最近的几次的代码评审还是发现有不少兄弟没注意到。 所以还是想拿出来说下。 正文 是个什么场景呢? 就是 for循环 里面还有 for循环, 然后做一些数据匹配、处理 这种场景。 我们结合实例代码来…...
关于我拒绝了腾讯测试开发岗offer这件事
2022年刚开始有了向要跳槽的想法,之前的公司不能算大厂但在重庆也算是数一数二。开始跳槽的的时候我其实挺犹豫的 其实说是有跳槽的想法在2022年过年的时候就有了,因为每年公司3月会有涨薪的机会,所以想着看看那能不能涨(其实还是…...
旅游景点网站设计/网页平台做个业务推广
面向对象是一种程序的设计方法,或者说它是一种程序设计范型,其基本思想是适用对象,类,封装,继承,消息等基本概念来进行程序设计。它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并…...
wordpress中footer函数/google搜索引擎入口 镜像
内涵图转载于:https://www.cnblogs.com/jhcla/p/4390174.html...
唐山做网站公司哪家好/优化官网咨询
http://www.cnblogs.com/littlemonk/p/5500801.html这篇文章主要介绍了Angularjs中UI Router全攻略,涉及到angularjs ui router的基本用法,需要的朋友参考下吧首先给大家介绍angular-ui-router的基本用法。 如何引用依赖angular-ui-router angular.modul…...
asp.net mysql 网站开发/百度关键词收录
1. 问题描述: 给定一个 nm 大小的二进制矩阵,矩阵中只包含 0 和 1。现在,你可以进行如下操作:选中一个 22 的子矩阵,改变其中 3 个元素的值(0 变为 1,1 变为 0)。你的任务是通过上述…...
什么类型的网站比较容易做/全球热门网站排名
最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...
长宁网站建设价格/百度今日数据
发布于vn.py社区公众号【vnpy-community】 原文作者:张国平 | 发布时间: 2020-01-26 cProfile介绍较为大型的程序在开发完成后,通常都会采用以下步骤来进行性能优化:对代码的执行效能测量与分析(profiling);…...