运算符简介
运算符是一种特殊的符号,用来表示数据的运算、赋值和比较等 我们通常将运算符分为一下几大类
1. 算术运算符
算术运算符一般是对数值类型的变量进行加减乘除等运算的
| 运算符 | 运算 | 例子 | 结果 |
|---|---|---|---|
| + | 正号 | +2 | 2 |
| - | 负号 | -2 | -2 |
| + | 加号 | 2+2 | 4 |
| - | 负号 | 4-2 | 2 |
| * | 乘号 | 4*2 | 8 |
| / | 除号 | 4/2 | 2 |
| % | 取模|取余 | 9%2 | 1 |
| ++ | 自增 | var a=1 a++ | a=2 |
| - - | 自减 | var a=2 a- - | a=1 |
| + | 字符串相加|字符串拼接 | “abc”+“defg” | “abcdefg” |
使用时注意事项
- 对于除号/,它的整数除和小数除是有区别的;整数之间做除法时,只保留整数时部分而舍弃小数部分。不会进行四舍五入等。例:x:=50/9 结果是5
- 当对于一个数取模时可以等价于a%b=a-a/b*b
- 对于++和–来说只能独立运算;不能a:=b++或者b:=a-- ;也不能写在变量的前面只能是a++或者b–;而不能++a或者–b
2. 赋值运算符
赋值运算就是将某个运算后的值赋给指定的变量
| 运算符 | 运算 | 例子 | 解释 |
|---|---|---|---|
| = | 简单的赋值 | 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 |
3. 比较运算符|关系运算符
关系运算符的结果都是bool型;要么是true要么是false
| 运算符 | 运算 | 例子 | 结果 |
|---|---|---|---|
| == | 相等 | 5==5 | true |
| != | 不等于 | 5==5 | true |
| > | 大于 | 5>5 | false |
| < | 小于 | 5<5 | false |
| >= | 大于等于 | 100>=5 | true |
| <= | 小于等于 | 5<=100 | true |
4. 逻辑运算符
一般用于连接多个条件(关系表达式),最终的结果也是bool型
| 运算符 | 运算 | 例子 | 结果 | 解释 |
|---|---|---|---|---|
| && | 并且 | a==b&&c==d | true | 俩边都成立才是true 如果有一边不成立结果为fasle |
| || | 或者 | a==c||b==d | true | 俩边有一个成立则等式成立返回true;如果俩边都不成立;结果为fasle |
| ! | 非 | a==2 !a | false | 判断前结果为true 非后结果为fasel反之亦然 |
代码里面在解释一下
package main
import "fmt"
func main(){
var a int=10
var b int=20
var c int=10
var d int=40
f:= a==c &&b==d
//&&俩边结果都为true 才返回true; 其中有一个为fasle 那么结果也为fasle
fmt.Printf("f: %v\n", f)//结果为fasle
f=a==c||b==d
//||俩边结果中有一个为true 其结果返回true; 都为fasle 那么结果也为fasle
fmt.Printf("f: %v\n", f)//结果为true
var e bool=true
f=!e
//!前结果为true;那么!后结果为fasle;反之亦然;取反的意思
fmt.Printf("f: %v\n", f)//结果为fasle
}
5. 位运算符
| 运算符 | 运算 | 解释 |
|---|---|---|
| & | 按位与 | 俩位全为1,结果为1,否则为0 |
| | | 按位或 | 俩位有一个为1,结果为1,否则为0 |
| ^ | 按位异或 | 俩位一个为0一个为1,结果为1,否则为0 |
| << | 右移运算符 | 低位溢出,符号位不变,并用符号位补溢出的高位 |
| >> | 左移运算符 | 符号不变,低位补0 |
6. 其他运算符
| 运算符 | 运算 | 解释 |
|---|---|---|
| & | 返回变量的地址 | &a 将返回变量a的地址 |
| * | 指针变量 | *a,声明一个指针变量 |
go中得流程控制注意事项
- 对if 的使用
//if的使用
if a:=20;a==20{
fmt.Printf("a: 我还可以这样使用%v\n", a)
}
- switch的使用
1. case 后是一个表达式【常量,变量,一个有返回值的函数等都可以】
2. case 后的各个表达式数据类型必须和switch的表达式数据类型一致
3. case 后面的表达式如果是常量值,则要求不能重复
4. case 后面的可以带多个表达式,使用逗号分隔
5. case 后面不需要跟着break,程序默认是自己添加了break
6. default 不是必须的 请注意使用