Go的运算符
1 算术运算符
|
运算符 |
术语 |
示例 |
结果 |
|
+ |
加 |
10 + 5 |
15 |
|
- |
减 |
10 - 5 |
5 |
|
* |
乘 |
10 * 5 |
50 |
|
/ |
除 |
10 / 5 |
2 |
|
% |
取模(取余) |
10 % 3 |
1 |
|
++ |
后自增,没有前自增 (单独语句,并不是运算符) |
a=0; a++ |
a=1 |
|
-- |
后自减,没有前自减 (单独语句,并不是运算符) |
a=2; a-- |
a=1 |
2 关系运算符
|
运算符 |
术语 |
示例 |
结果 |
|
== |
相等于 |
4 == 3 |
false |
|
!= |
不等于 |
4 != 3 |
true |
|
< |
小于 |
4 < 3 |
false |
|
> |
大于 |
4 > 3 |
true |
|
<= |
小于等于 |
4 <= 3 |
false |
|
>= |
大于等于 |
4 >= 1 |
true |
3 逻辑运算符
|
运算符 |
术语 |
示例 |
结果 |
|
! |
非 |
!a |
如果a为假,则!a为真; 如果a为真,则!a为假。 |
|
&& |
与 |
a && b |
如果a和b都为真,则结果为真,否则为假。 |
|
|| |
或 |
a || b |
如果a和b有一个为真,则结果为真,二者都为假时,结果为假。 |
package main
import "fmt"
func main(){
fmt.Println("4>3 结果:", >)
fmt.Println("4!=3 结果", !=)
fmt.Println("!(4>3) 结果:", !(>))
fmt.Println("!(4!=3) 结果", !(!=))
//&& 与,并且, 左边右边都为真,结果才为真
fmt.Println("true && true 结果:", true && true)
fmt.Println("true && false 结果:", true && false)
// || 或 左边和右边都为假的时候,结果才为假,其他都为真
fmt.Println("true || false 结果:", true || false)
fmt.Println("false || false 结果:", false || false)
a :=
// fmt.Println("0<a<=10 结果为:", 0<a<=10) //go中不支持这种连写,python支持
fmt.Println("0<a && a <=10 的结果:", <a && a <=)
}
4 位运算符
|
运算符 |
术语 |
说明 |
示例 |
|
& |
按位与 |
参与运算的两数各对应的二进位相与(两位都为1则为1) |
60 & 13 结果为12 |
|
| |
按位或 |
参与运算的两数各对应的二进位相或(两位有一个为1就为1) |
60 | 13 结果为61 |
|
^ |
异或 |
参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1(两位不一样则为1) |
60 ^ 13 结果为240 |
|
<< |
左移 |
左移n位就是乘以2的n次方。 |
4 << 2 结果为16 |
|
>> |
右移 |
右移n位就是除以2的n次方。 |
4 >> 2 结果为1 |
//权限设计 --- r
--- w
--- x | = //增加权限
& = //验证权限
^ = // 删除权限
const (
_ = iota
KB = << ( * iota)
MB = << ( * iota)
GB = << ( * iota)
TB = << ( * iota)
PB = << ( * iota)
)
5 赋值运算符
|
运算符 |
说明 |
示例 |
|
= |
普通赋值 |
c = a + b 将 a + b 表达式结果赋值给 c |
|
+= |
相加后再赋值 |
c += a 等价于 c = c + a |
|
-= |
相减后再赋值 |
c -= a 等价于 c = c - a |
|
*= |
相乘后再赋值 |
c *= a 等价于 c = c * a |
|
/= |
相除后再赋值 |
c /= a 等价于 c = c / a |
|
%= |
求余后再赋值 |
c %= a 等价于 c = c % a |
|
<<= |
左移后赋值 |
c <<= 2 等价于 c = c << 2 |
|
>>= |
右移后赋值 |
c >>= 2 等价于 c = c >> 2 |
|
&= |
按位与后赋值 |
c &= 2 等价于 c = c & 2 |
|
^= |
按位异或后赋值 |
c ^= 2 等价于 c = c ^ 2 |
|
|= |
按位或后赋值 |
c |= 2 等价于 c = c | 2 |
6 其他运算符
|
运算符 |
术语 |
示例 |
说明 |
|
& |
取地址运算符 |
&a |
变量a的地址 |
|
* |
取值运算符 |
*a |
指针变量a所指向内存的值 |
7 运算符优先级
在Go语言中,一元运算符拥有最高的优先级,二元运算符的运算方向均是从左至右。
下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:
|
优先级 |
运算符 |
|
7 |
^ ! |
|
6 |
* / % << >> & &^ |
|
5 |
+ - | ^ |
|
4 |
== != < <= >= > |
|
3 |
<- |
|
2 |
&& |
|
1 |
|| |
Go的运算符的更多相关文章
- shell运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用. expr 是一款表达式计算工具,使用它能完成表达式的求值操作. #!/bin/bash v ...
- SQL Server-聚焦APPLY运算符(二十七)
前言 其实有些新的特性在SQL Server早就已经出现过,但是若非系统的去学习数据库你会发现在实际项目中别人的SQL其实是比较复杂的,其实利用新的SQL Server语法会更加方便和简洁,从本节开始 ...
- java中的移位运算符:<<,>>,>>>总结
java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >& ...
- 我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- .NET 基础 一步步 一幕幕[运算符、占位符、转义符]
运算符.占位符.转义符 好吧,在五局全胜之后,终于升到了三个钻,距离一个星星还有一大段距离,忽然想起来今天的博客还没写,果断坑队友,来写博客了....感觉以后还是每天更新一篇比较好.要不晚上就该熬 ...
- ECMASCript2015 提案 stage-3的对象展开运算符
看源码时看到如下的代码 export default { //通过mapActions将actions映射到methods里 methods: { ...mapActions([ 'updateSta ...
- JavaScript权威设计--JavaScript表达式与运算符,语句(简要学习笔记六)
1.delete是一元操作符,用来删除对象属性或者元素. var a={ x:1, y:2 } delete a.x; //删除x属性 “x”in a //false:a对象中已经不存在x属性 ale ...
- JavaScript权威设计--JavaScript表达式与运算符(简要学习笔记五)
1.3种原始表达式 1.直接量: 1.23 //数字直接量 “hello” //字符串直接量 ...
- LINQ to SQL语句(18)之运算符转换
运算符转换 1.AsEnumerable:将类型转换为泛型 IEnumerable 使用 AsEnumerable<TSource> 可返回类型化为泛型 IEnumerable 的参数.在 ...
- El表达式的关系运算符
El表达式的关系运算符: == 对应 eq != 对应 ne > 对应 gt < 对应 It
随机推荐
- 201871010134-周英杰《面向对象程序设计(Java)》第四周学习总结
201871010134-周英杰<面向对象程序设计(Java)>第四周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...
- adb 命令之push pull
C:\Users\ceshi>adb pull /storage/emulated/legacy/00001.vcf D:/E:\eclipse\Demo1>adb push E:\ecl ...
- 网站调试时记得关闭火狐adblock插件
由于特殊需要,xmyanke需要在网站右侧添加一个弹窗,第一个网站加上代码后可以正常显示,第二个网站却怎么也看不到图片,同样的安装方法为什么差别那么大呢?重新复制代码还是不行,再试一遍,依然如此,wi ...
- 模拟赛T2 线段树优化建图+tarjan+拓扑排序
然而这只是 70pts 的部分分,考场上没想到满分怎么做(现在也不会) code: #include <cstdio> #include <string> #include & ...
- Spring Boot 知识笔记(servlet、监听器、拦截器)
一.通过注解自定义servlet package net.Eleven.demo.servlet; import javax.servlet.ServletException; import java ...
- es6引用模块import后面加上花括号{}和不加花括号的区别
在使用import语法引用模块时,如何正确使用{} 例如:有两个文件,home.js.user.js 当需要在home.js中引入user.js的时候 //home.js import user fr ...
- tcp & 长连接 短连接
参考文档: tcp协议 http://blog.chinaunix.net/uid-26833883-id-3627644.html 长连接和短连接 http://blog.csdn.net/free ...
- 一个web请求的全过程
参考文档:http://www.mamicode.com/info-detail-1357508.html 名词解释DNS: DNS(Domain Name System,域名系统),因特网上作为域名 ...
- C++ getline()的两种用法
getline():用于读入一整行的数据.在C++中,有两种getline函数.第一种定义在头文件<istream>中,是istream类的成员函数:第二种定义在头文件<string ...
- Maven ------ 了解与安装
1.什么是Maven Maven :项目对象模型(POM),可以通过一段描述信息来管理项目的构建,报告和文档的项目管理工具软件, maven 来自犹太语意为知识的积累,为了在项目中简化构建过程,最直观 ...