之前我学过C、Java、Python语言时总结的经验:
- 先建立整体框架,然后再去抠细节。
- 先Know how,然后know why。
- 先做出来,然后再去一点点研究,才会事半功倍。
- 适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。
- 对于GO语言,切记遵守语法格式规则。(例如python语言、例如SpringBoot框架等)
解释:某些知识点,就是很难了解,那么先做出来,然后继续向前学习,可能在某个时间点我们就会恍然大悟。
05【保姆级】-GO语言的运算符
- [一、 运算符的基本分类](#一、 运算符的基本分类)
- 二、算数运算符
-
- [1. 介绍](#1. 介绍)
- [2. 取余和取模](#2. 取余和取模)
- [3. ++ 和--](#3. ++ 和--)
- 三、关系运算符
- 四、逻辑运算符
- 五、赋值运算符
- 六、位运算符
- 七、其他运算符
- 八、终端输入
一、 运算符的基本分类
运算符是一种特殊的符号,用于运算、比较和赋值等。
- 算术运算符
- 比价运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 其他运算符
(ps:Go语言中没有三元运算符的)
二、算数运算符
1. 介绍
算数运算符是对 数值类型的变量 进行运算的,比如加减乘除。在Go程序中实用的非常多。

2. 取余和取模
- 对于除号"",它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如: x:= 19/5,结果是 3
- 当对一个数取模时,可以等价 a%b=a-a/b*b ,这样我们可以看到 取模的一个本质运算。
go
// 关于 运算符: 【/】 取模。
fmt.Println(10 / 3) // 3
fmt.Println(10.0 / 4) // 2.5
fmt.Println(10.0 / 5) // 2
// 关于 运算符: 【%】 取余。 就是余数
fmt.Println(10 % 3) // 1
fmt.Println(10 % 4) // 2
fmt.Println(10 % 5) // 0
练习题:假期还有97天,那么还剩下几个星期,零几天?
go
var day int = 97
fmt.Println("还有", day/7, "个星期", " 零", day%7, "天")
// 还有 13 个星期 零 6 天
3. ++ 和--
-
Golang的自增自诚只能当做一个独立语言使用时,不能这样使用 【b=a++ 或者b=a--】
-
Golang的++ 和-- 只能写在变量的后面,不能写在变量的前面,即:只有 a++/ a-- 没有 ++a、--a
-
Golang的设计者去掉c/iava 中的 自增自诚的容易混淆的写法,让Golang更加简洁.
go
var a int = 10
a++
fmt.Println(a) // 11
a--
fmt.Println(a) // 10
三、关系运算符
- 关系运算符的结果都是bool类型,也就是要么就是true,要么就是false
- 关系表达式,经常用在if结构 的条件中,或者循环的条件中。
- 比较运算符是:"==",不能写成"="

四、逻辑运算符
用于连接多个条件(一般就是关系运算符) ,最终结果也是一个Bool值
- 【&&】也叫短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false
- 【||】他叫短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true


五、赋值运算符
赋值运算符就是将某个运算后的值,赋给指定的变量。

面试题: 如何将两个数进行互换,其中不能使用第三个变量。
go
a := 12
b := 5
fmt.Println("更改前:", "a=", a, " b=", b)
a = a + b // a= 17
b = a - b // b = 12
a = a - b // 5
fmt.Println("更改后:", "a=", a, " b=", b)
//更改前: a= 12 b= 5
//更改后: a= 5 b= 12

六、位运算符

七、其他运算符

八、终端输入
fmt.Scanln
当程序执行到 【fmt.Scanln(&xxx)】时,程序会停在这里,等待用户输入后,进行回车,然后才会执行下一条指令。
fmt.Scanf
可以按指定的格式进行输出。例如可以使用空格进行隔开。
