Go 语言学习之运算符
算术运算符
算术运算符有加号(+)、减号(-)、乘号(*)、除号(/)、取余(%),我们声明两个变量 a 和 b,并分别赋值 10 和 5,通过代码,我们演示算术运算符的用法。
func main() {
a := 10
b := 5
fmt.Println("a + b = ", a+b)
fmt.Println("a - b = ", a-b)
fmt.Println("a * b = ", a*b)
fmt.Println("a / b = ", a/b)
fmt.Println("a % b = ", a%b)
}
02
++ 和 --
自增和自减不是运算符,只能作为独立语句使用,不能用于表达式,不能放在变量名前面使用。通过代码,我们演示 ++ 和 -- 的用法。
func main() {
a := 10
b := 5
a++
b--
fmt.Println("a++:", a)
fmt.Println("b--:", b)
03
赋值运算符
为了简化表达式,与大多数语言相同,Go 语言也提供了一些赋值运算符,有等号(=)、加等(+=)、减等(-=)、乘等(*=)、除等(/*)、取余等(%=),通过代码,我们演示赋值运算符的用法。
func main() {
aa := 50
aa += 10
fmt.Println("aa = ", aa)
bb := 50
bb -= 10
fmt.Println("bb = ", bb)
cc := 50
cc *= 10
fmt.Println("cc = ", cc)
dd := 50
dd /= 10
fmt.Println("dd = ", dd)
ff := 50
ff %= 10
fmt.Println("ff = ", ff)
}
04
关系运算符
关系运算符主要用于流程控制语句中,在 Go 语言中,关系运算符有大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于等于(==)和不等于(!=),通过代码,我们演示关系运算符的用法。
func main() {
if a > 5 && b > 5 {
fmt.Println("a > 5 且 b > 5")
}
if a > 5 || b > 5 {
fmt.Println("a > 5 或 b > 5")
}
if a > 5 && b >= 5 {
fmt.Println("a > 5 且 b >= 5")
}
if a == b {
fmt.Println("a == b")
}
if a != b {
fmt.Println("a != b")
}
boolean := false
if !boolean {
fmt.Println("非假既真")
}
}
05
逻辑运算符
逻辑运算符,同样主要用于流程控制语句中,在 Go 语言中,逻辑运算符有且(&&)、或(||)、非(!),代码演示同上面的关系运算符代码。
06
& 和 *
取地址符(&)和指针运算符(*),不是所有对象都能进行取地址操作,但是变量总是能正确返回地址。指针运算符在等号左边时,可以更新目标对象,在等号右边时,可以获取目标对象。通过代码,我们演示取地址符和指针运算符的用法。
func main() {
x := 50
y := &x
*y++
z := *y
fmt.Println("y = ", y)
fmt.Println("x = ", x)
fmt.Println("z = ", z)
}
07
位运算符
位运算符是对整数在内存中的二进制位进行操作。因为篇幅原因,本文我们不对位运算符做过多的介绍,在工作中,个人建议尽量少用或不用位运算符,原因是代码可读性不好。如果你对位运算符感兴趣,可自行查阅相关资料。
08
优先级
最后,我们来介绍一下运算符的优先级,一元运算符的优先级最高,二元运算符的优先级分五个级别,从高往低分别是:
* |
/ |
% |
<< |
>> |
& |
&^ |
---|---|---|---|---|---|---|
+ |
- |
| |
^ |
|||
== |
!= |
< |
<= |
> |
>= |
|
&& |
||||||
|| |
相同优先级的二元运算符,从左往右依次计算。此外,我们还可以使用小括号提升某个表达式中运算符的优先级。
完整代码:
输出结果:
a + b = 15
a - b = 5
a * b = 50
a / b = 2
a % b = 0
a++: 11
b--: 4
aa = 60
bb = 40
cc = 500
dd = 5
ff = 0
a > 5 或 b > 5
a != b
非假既真
y = 0xc0000b4070
x = 51
z = 51
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 多线程基础(五):java对象的MarkWord及synchronized锁升级过程
- 【每日一题】45. Jump Game II
- 「Elasticsearch + Lucene」搜索引擎的架构、倒排索引和搜索过程
- 查看 MAC JDK默认安装路径 JAVA路径 的shell 命令
- Gradle 命令行介紹和安裝教程
- Spring工厂创建复杂对象
- Nginx反向代理配置去除前缀
- 深入浅出java虚拟机
- Maven resources 分环境
- JetBrains Upsource(上源) 研究
- Spring JPA 拓展
- python自学成才之路 死锁的解决方案
- C++核心准则T.40: 使用函数对象向算法传递操作
- web页面性能优化总结及原理解释
- C++核心准则T.41:在模板概念中只对本质属性定义需求