5、运算符
1.算数运算符
和数学中固定运算符差不过
+
-
*
/
%
++
--
注意:Go预言中不允许 ++i --i 这种写法并且i++ i-- 不允许参与运算
/*
算术运算符:+,-,*,/,%,++,--
*/
var a, b = 10, 3
sum := a + b
fmt.Printf("a + b=%d \n", sum)
sub := a - b
fmt.Printf("a - b=%d \n", sub)
mul := a * b
fmt.Printf("a * b=%d \n", mul)
div := a / b
fmt.Printf("a / b=%d \n", div)
mod := a % b
fmt.Printf("a %% b=%d \n", mod)
c := 10
c++
fmt.Printf("c++ = %d", c)
c--
fmt.Printf("c-- = %d", c)
// 注意 ++ -- 不能参与运算;例如下面错误写法
// d := c--
// e := c++
2.关系运算符
>
<
>=
<=
==
!=
值得注意的是,关系运算符的结果都是bool类型的
/*
关系运算符:>,<,>=,<=,==,!=
*/
n1, n2 := 10, 20
gt := n1 > n2
lt := n1 < n2
ge := n1 >= n2
le := n1 <= n2
eq := n1 == n2
ne := n1 != n2
fmt.Printf("n1 > n2 ? %t \n", gt)
fmt.Printf("n1 < n2 ? %t \n", lt)
fmt.Printf("n1 >= n2 ? %t \n", ge)
fmt.Printf("n1 <= n2 ? %t \n", le)
fmt.Printf("n1 == n2 ? %t \n", eq)
fmt.Printf("n1 != n2 ? %t \n", ne)
3.逻辑运算符
逻辑运算符: 操作数必须是bool,运算结果也是bool
逻辑与:&&
- 运算规则:所有的操作数都是真,结果才为真,有一个为假,结果就为假“一假则假,全真才真”
逻辑或:||
- 运算规则;偶有的操作数都是假,结果才为假,有一个为真,结果就为真"一真则真,全假才假”
逻辑非:!
- !T->false
- !F->true
/*
逻辑运算符: && || !
*/
f1, f2, f3 := true, false, true
res1 := f1 && f2
fmt.Printf("res1: %t \n", res1)
res2 := f1 || f2
fmt.Printf("res2: %t \n", res2)
res3 := !f3
fmt.Printf("res3: %t \n", res3)
x, y, z := 10, 20, 30
res4 := (x > y && z%x == y) || y < (z/a)
fmt.Printf("res4: %t \n", res4)
res5 := x*2 < z || z/x < y
fmt.Printf("res5: %t \n", res5)
4.位运算符
位运算符
按位&:
对应位的值如果都为1才为1,有一个为0就为0
按位|:
对应位的值如果都是0才为0,有一个为1就为1
异或^:
二元:a^b
对应位的值不同为1,相同为0
一元:^a
按位取反:
1 ---> 0
0 ---> 1
位清空:&^
a&^b
对于b上的每一个值
如果为0,则取a对应位上的数值
如果为1,则结果就取0
5.赋值运算符
运算符的优先级
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2022-03-26 SpringCloudAlibaba-OSS文件上传