一篇文章带你了解 Go 语言基础之运算符和流程控制

时间:2022-03-21 11:54:53

一篇文章带你了解 Go 语言基础之运算符和流程控制

前言

Hey,大家好呀,我是星期八,这次咱们继续学习Go基础之运算符流程控制叭。

运算符

运算符这个名字听着玄乎,其实我们平常见的很多了,就像=,+,/之类的。

  • 运算符主要分为
  • 算数运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符

下面就来简单了解以下叭。

算数运算符

算数运算符顾名思义,主要用在算数中,加减乘除了啥的

简单了解以下叭。

运算符 描述
+ 相加
- 相减
* 相乘
/ 相除
% 求余
++ 自加
--

关系运算符

 

运算符 描述
== 检查两个值是否相等,如果相等返回 True 否则返回 False
!= 检查两个值是否不相等,如果不相等返回 True 否则返回 False
> 检查左边值是否大于右边值,如果是返回 True 否则返回 False
>= 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False
< 检查左边值是否小于右边值,如果是返回 True 否则返回 False
<= 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False
 

 

逻辑运算符

运算符 描述
&& 逻辑 and 运算符。 如果两边的操作数都是 True,则为 True,否则为 False
|| 逻辑 or 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False
! 逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True

注:逻辑运算符是很重要的,开发中经常用到。

位运算符

位运算符有些底层,特殊情况会用到

运算符 描述
& 参与运算的两数各对应的二进位相与。 (两位均为1才为1)
| 参与运算的两数各对应的二进位相或。 (两位有一个为1就为1)
^ 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 (两位不一样则为1)
<< 左移n位就是乘以2的n次方。 “a<”是把a的各二进位全部左移b位,高位丢弃,低位补0。
>> 右移n位就是除以2的n次方。 “a>>b”是把a的各二进位全部右移b位。

赋值运算符

赋值运算符在开发中用的也是比较多的。

运算符 描述
= 简单的赋值运算符,将一个表达式的值赋给一个左值
+= 相加后再赋值
-= 相减后再赋值
*= 相乘后再赋值
/= 相除后再赋值
%= 求余后再赋值
<<= 左移后赋值
>>= 右移后赋值
&= 按位与后赋值
|= 按位或后赋值
^= 按位异或后赋值

流程控制

在Go中,流程控制有以下几种。

  • if
    • if
    • switch case
  • for
    • 标准for
    • forrange
  • goto(慎用)

if

语法

  1. //方式一,一个if
  2. if条件{
  3. //执行语句
  4. }
  5. //方式二,if条件不成功执行else
  6. if条件{
  7. //if成功语句
  8. }else{
  9. //if不成功语句
  10. }
  11. //方式三,带有elseif得
  12. if条件1{
  13. //if成功语句
  14. }elseif条件2{
  15. //if不成功,继续elseif条件
  16. }else{
  17. //上面都不成功,执行else
  18. }

例子

  1. packagemain
  2.  
  3. import"fmt"
  4.  
  5. funcmain(){
  6. vargender="男"
  7.  
  8. ifgender=="男"{
  9. fmt.Println("男")
  10. }elseifgender=="女"{
  11. fmt.Println("女")
  12. }else{
  13. fmt.Println("啥都不是???")
  14. }
  15. }

switch case

switch case和if本质是一个东西,但是在某些场景,switch是比if更加简洁的。

代码

  1. packagemain
  2.  
  3. import"fmt"
  4.  
  5. funcmain(){
  6. varweek=3
  7. switchweek{
  8. case1:
  9. fmt.Println("周一")
  10. case2:
  11. fmt.Println("周二")
  12. case3:
  13. fmt.Println("周三")
  14. case4:
  15. fmt.Println("周四")
  16. case5:
  17. fmt.Println("周五")
  18. case6:
  19. fmt.Println("周六")
  20. case7:
  21. fmt.Println("周日")
  22. default://如果上面都没执行,会执行default
  23. fmt.Println("星期八????")
  24. }
  25. }

注:在Go中,switch是没有case穿透的。

Go的switch可以case多个值。

  1. packagemain
  2.  
  3. import"fmt"
  4.  
  5. funcmain(){
  6. varweek=3
  7. switchweek{
  8. case1,2,3,4,5:
  9. fmt.Println("上班")
  10. case6:
  11. fmt.Println("周六睡懒觉")
  12. case7:
  13. fmt.Println("周日去旅游")
  14. default:
  15. fmt.Println("飞天了???")
  16. }
  17. }

for

标准for循环

语法

  1. for初始条件;判断条件;结束条件{
  2. 语句
  3. }

代码

  1. packagemain
  2.  
  3. import"fmt"
  4.  
  5. funcmain(){
  6. fori:=0;i<10;i++{
  7. fmt.Println(i)
  8. }
  9. }

无限循环

谨慎执行!!!

  1. packagemain
  2.  
  3. import"fmt"
  4.  
  5. funcmain(){
  6. for{
  7. fmt.Println("666")
  8. }
  9. }

for range

for ragne可以很方便循环数组,切片,字符串,map,channel等。

遍历数组示例

  1. packagemain
  2.  
  3. import"fmt"
  4.  
  5. funcmain(){
  6. varstudent_list=[...]string{"张三","李四","王五"}
  7. forindex,v:=rangestudent_list{
  8. //index为下标,v是每一个的值
  9. fmt.Println(index,v)
  10. }
  11. }

注:

  1. 如果数组,切片,字符串
  2. index是下标,v是值
  3. 如果是map
  4. index是键,v是对(值)
  5. 如果是通道
  6. 只有一个值,就是通道内的值

补充:

在Go中,只有for循环,没有while。

for循环就两种方式。

goto

goto可以通过标签在代码间无条件跳转,这就造成了一个局面,如果使用gote过多,会造成逻辑混乱,跳来跳去。

所以,在开发中,要慎用,不到万不得已,不要使用。

示例

  1. packagemain
  2.  
  3. import"fmt"
  4.  
  5. funcmain(){
  6. fori:=0;i<10;i++{
  7. forj:=0;j<10;j++{
  8. ifj==2{
  9. //直接跳转到下面的breakTag标签
  10. gotobreakTag
  11. }
  12. fmt.Printf("%v-%v\n",i,j)
  13. }
  14. }
  15. //要跳转的标签
  16. breakTag:
  17. fmt.Println("结束for循环")

总结

上述我们学习了Go基础之运算符和流程控制。如果在操作过程中有任务问题,记得下面讨论区留言,我们看到会第一时间解决问题。

我是码农星期八,如果觉得还不错,记得动手点赞一下哈。感谢你的观看。

原文链接:https://mp.weixin.qq.com/s/q9QdjcQ7qyAeG5ekq30gvw