运算符and流程控制
运算符
Go 语言内置的运算符有:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算服
算术运算符
运算符 | 描述 |
+ | 相加 |
- | 相减 |
* | 相乘 |
/ | 相除 |
% | 求余 |
注意: ++(自增)和--(自减) 在go语言中是单独的语句,不是运算符
关系运算符
运算符 | 描述 |
== | 判断两遍是否相等 如果等于返回True 不等于返回false |
!= | 判断两遍是否不等 如果不等返回True 等于返回false |
> | 判断左边是否大于右边 如果是返回 True 否则返回 False。 |
< | 判断左边是否小于右边 如果是返回 True 否则返回 False。 |
>= | 判断左边是否大于或者等于右边 如果是返回 True 否则返回 False。 |
<= | 判断左边是否小于或者等于右边 如果是返回 True 否则返回 False。 |
逻辑运算符
运算符 | 描述 |
&& | 表示python中的and 。 如果两边的操作数都是 True,则为 True,否则为 False。 |
|| | 表示python中的or。 如果两边的操作数有一个 True,则为 True,否则为 False。 |
! | 表示python中的not。如果条件为 True,则为 False,否则为 True。 |
// &&表示:and ||表示:or !表示:not floge1 := true floge2 := false fmt.Println(floge1 && floge2) // 结果是false 一个为假就返回false fmt.Println(floge1 || floge2) // 返回True 一个为真就返回True fmt.Println(!floge2) // 返回True 反值 True为false false为True
位运算符
位运算符对整数中的内存做二进制为进行操作
运算符 | 描述 |
& | 参与运算的两数各对应的二进位相与。 (两位均为1才为1) |
| | 参与运算的两数各对应的二进位相或。 (两位有一个为1就为1) |
^ | 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 (两位不一样则为1) |
<< |
左移n位就是乘以2的n次方 “a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。 |
>> |
右移n位就是除以以2的n次方 “a>>b”是把a的各二进位全部右移b位。 |
面试题
问题:有一堆数字,如果除了一个数字以外,其他数字都出现了两次,那么如何找到出现一次的数字? 答案: 用"^"异或
赋值运算符
运算符 | 描述 | ||||||||||||||||||||||
|
pass |
流程控制
流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。
go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码,降低重复代码而生的结构,属于扩展类的流程控制
if条件分支
if条件判断基本写法
Go语言中if条件判断的格式如下:
if 表达式1{ 分支1 }else if{ 分支2 }else{ 分支3 }
当表达式1的结果为true
时,执行分支1,否则判断表达式2,如果满足则执行分支2,都不满足时,则执行分支3。 if判断中的else if
和else
都是可选的,可以根据实际需要进行选择。
Go语言规定与if
匹配的左括号{
必须与if和表达式
放在同一行,{
放在其他位置会触发编译错误。 同理,与else
匹配的{
也必须与else
写在同一行,else
也必须与上一个if
或else if
右边的大括号在同一行。
例子:
score := 100 if score == 100 { fmt.Println("同学成绩真好") } else if score < 100 { fmt.Println("还不错") } else { fmt.Println("需要努力") }
if条件判断特殊写法:
func ifDemo2() { if score := 65; score >= 90 { fmt.Println("A") } else if score > 75 { fmt.Println("B") } else { fmt.Println("C") } }
注意: 两种写法是有区别的 第一种是全局变量 第二种的变量是只在if判断里面 也就是说 两者的作用域不一样***