Golang的运算符优先级实操案例
Golang的运算符优先级实操案例
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.运算符优先级案例
运算符是用来在程序运行时执行数学或逻辑运算的,在Go语言中,一个表达式可以包含多个运算符,当表达式中存在多个运算符时,就会遇到优先级的问题,此时应该先处理哪个运算符呢?
经过前面的学习,想必大家对Golang中支持的运算符有一定的了解了,其实Golang中的运算符大致分为四类,即特殊(后缀)运算符,单目运算符,双目运算符和逗号运算符。
特殊(后缀)运算符:
比如:小括号("()"),中括号("[]"),点(".")等
单目运算符:
一个运算符需要一个标识符(变量,常量,函数返回值)可以参与计算。
双目运算符:
一个运算符需要两个标识符参与计算。
优先级别从高到底依次为算数运算符,比较运算符,位运算符,逻辑运算符,赋值运算符。
逗号运算符:
使用最后一个逗号的值作为结果。 综上所述,Go语言运算符的优先级从高到底大致分为:特殊运算符优先级高于单目运算符,单目运算符优先级高于双目运算符,双目运算符优先级高于逗号运算符。 而实际上Go语言有几十种运算符,被分成十几个级别,有的运算符优先级不同,有的运算符优先级相同。Go语言中常见的操作符优先级由高到底顺序依次如下所示:
后缀运算符:
典型代表:"()","[]","->",优先级顺序为从左到右。 单目运算符:
典型代表:"-"(负号),"+"(正号),"--"(自减),"++"(自加),"&"(取内存地址),"*"(指针类型,取值),"!"(取反,即逻辑非),优先级顺序为从左到右。 算数运算符:
典型代表:"*"(乘号),"/"(除号),"%"(取余),"+"(加法),"-"(减法),优先级顺序为从左到右。 位移运算符:
典型代表:"<<"(左移),">>"(右移),优先级顺序为从左到右。 关系/比较运算符:
典型代表:"<","<=",">",">=","==","!=",优先级顺序为从左到右。
位逻辑运算符:
典型代表:"&"(按位与),"^"(按位异或),"|"(按位或),优先级顺序为从左到右。 逻辑运算符:
典型代表:"&&"(短路与),"||"(短路或),优先级顺序为从左到右 赋值运算符:
典型代表:"|=","^=","&=","<<=",">=","%=","/=","*=","-=","+=","=",优先级顺序为从左到右。 逗号运算符:
典型代表:","
关于运算符的优先级的使用小技巧:
()记不住,用括号
()长表达式,多用括号,
()易懂、易读
二.运算符优先级案例
package main import (
"fmt"
) func main() { /*
判断用户输出的年份是否是闰年
*/
var year int
fmt.Printf("请输入年份:>>> ") //给用户做一个输入提示信息
fmt.Scan(&year) fmt.Printf("判断%d年是否是闰年,结果为%t\n", year, year% == && year% != || year% == ) /*
分析上面的"year%4 == 0 && year%100 != 0 || year%400 == 0"中语句的包含的运算符优先级如下所示:
(1)算数运算符
year%4
year%100
year%400
(2)关系/比较运算符:
year%4 == 0
year%400 == 0
year%100 != 0
(3) 逻辑运算符:
year%4 == 0 && year%100 != 0
year%4 == 0 && year%100 != 0 || year%400 == 0 代码改进分析:
如上分析所示,根据操作符优先级表查出先做算数运算符,再做比较运算符,最后再做逻辑运算符。
代码的可读性较差,每次都得去查表,生产环境我们可以使用一些优先级的小技巧:
(1)记不住,用括号
(2)长表达式,多用括号,
(3)易懂、易读
综上所述,我们可以改写为以下表达式,使得可读性增强:
(year%4 == 0) && (year%100 != 0) || (year%400 == 0)
*/
fmt.Printf("判断%d年是否是闰年,结果为%t\n", year, (year% == ) && (year% != ) || (year% == ))
}

Golang的运算符优先级实操案例的更多相关文章
- 博科brocade光纤交换机alias-zone的划分-->实操案例
一,图形化操作 光纤交换机作为SAN网络的重要组成部分,在日常应用中非常普遍,本次将以常用的博科交换机介绍基本的配置方法. 博科300实物图: 环境描述: 如上图,四台服务器通过各自的双HBA卡连接至 ...
- 前端实操案例丨如何实现JS向Vue传值
摘要:项目开发过程中,组件通过render()函数渲染生成,并在组件内部定义了自定义拖拽指令.自定义拖拽指令规定了根据用户可以进行元素拖拽.缩放等一系列逻辑处理的动作. 本文分享自华为云社区<[ ...
- kivy之Button常用属性实操练习
kivy提供了Button按钮一系列属性来改变样式,下面列了常用的一些Button属性并用实操案例进行演练学习. 新建一个main.py,内容代码如下: from kivy.app import Ap ...
- jmeter & 性能测试:从0到实战(实操易用、面试造火箭、升职加薪必备)
[性能基础] 性能测试概念.术语:https://www.cnblogs.com/uncleyong/p/10706519.html 性能测试流程(新):https://www.cnblogs.com ...
- 号外号外:9月13号《Speed-BI云平台案例实操--十分钟做报表》开讲了
引言:如何快速分析纷繁复杂的数据?如何快速做出老板满意的报表?如何快速将Speed-BI云平台运用到实际场景中? 本课程将通过各行各业案例背景,将Speed-BI云平台运用到实际场景中 ...
- 新硬盘挂载-fdisk+mount案例实操
新硬盘挂载-fdisk+mount案例实操 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 现在很多服务器都支持热插拔了,当有新的硬盘插入到服务器上我们需要将其分区,格式化,然后挂载 ...
- Kafka集群优化篇-调整broker的堆内存(heap)案例实操
Kafka集群优化篇-调整broker的堆内存(heap)案例实操 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看kafka集群的broker的堆内存使用情况 1>. ...
- c语言运算符优先级与while循环案例
sizeof可以获取数据类型的内存中的大小(字节) #include <stdio.h> #include <stdlib.h> // standared 标准 // inpu ...
- Python相关分析—一个金融场景的案例实操
哲学告诉我们:世界是一个普遍联系的有机整体,现象之间客观上存在着某种有机联系,一种现象的发展变化,必然受与之关联的其他现象发展变化的制约与影响,在统计学中,这种依存关系可以分为相关关系和回归函数关系两 ...
随机推荐
- Linux 下安装 FFmpeg
1. 下载源代码: git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg 2. 编译 ./configure --enable-shared --pre ...
- 问题解决 : MyBatis一对一查询时,打印结果只有一条数据
问题截图:修改后,结果返回条数正确 问题解决: 因为有重名的列,建议起个别名
- 「Violet」蒲公英
「Violet」蒲公英 传送门 区间众数,强制在线. 分块经典题. 像这题一样预处理,然后就直接爆搞,复杂度 \(O(n \sqrt n)\) 参考代码: #include <algorithm ...
- Flask 教程 第二十三章:应用程序编程接口(API)
本文翻译自The Flask Mega-Tutorial Part XXIII: Application Programming Interfaces (APIs) 我为此应用程序构建的所有功能都只适 ...
- Write-up-Bulldog2
关于 下载地址:点我 哔哩哔哩:哔哩哔哩 信息收集 网卡:vboxnet0,192.168.56.1/24,Nmap扫存活主机发现IP为192.168.56.101 ➜ ~ nmap -sn 192. ...
- Java并发编程:Java内存模型JMM
简介 Java内存模型英文叫做(Java Memory Model),简称为JMM.Java虚拟机规范试图定义一种Java内存模型来屏蔽掉各种硬件和系统的内存访问差异,实现平台无关性. CPU和缓存一 ...
- 「快学springboot」16.让swagger帮忙写接口文档
swagger简介 官方的介绍 THE WORLD'S MOST POPULAR API TOOLING Swagger is the world's largest framework of API ...
- 与Python的第一次见面
1.Python的起源 Python的作者,Guido von Rossum,确实是荷兰人.1982年,Guido从阿姆斯特丹大学(University of Amsterdam)获得了数学和计算机硕 ...
- web应用基础架构
1.web中间件 中间件是一类连接软件组件和应用的计算机软件,它包括一组服务.以便运行在一台或多台服务器上的多个软件通过网络进行交互.该技术所提供的互操作性,推动了一致分布式体系架构的演进,该架构通常 ...
- 回顾PHP:第一章:PHP基础语法(2)
十.PHP常量和变量——用常量限制用户跳过某些文件(重要) 十.1常量在代码中定义.书写方式: define(常量名,常量值) 注:1.常量值只能为标量 2.常量名可以小写,但是通常大写 3.常量名可 ...