zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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

2023-04-18 17:00:36 时间

前言

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<<b”是把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. //方式二,if条件不成功执行else 
  5. if 条件{ 
  6.     //if成功语句 
  7. }else
  8.     //if不成功语句 
  9. //方式三,带有else if得 
  10. if 条件1{ 
  11.     //if成功语句 
  12. }else if 条件2{ 
  13.     //if不成功,继续else if条件 
  14. }else
  15.     //上面都不成功,执行else 

例子

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.     var gender = "男" 
  7.  
  8.     if gender == "男" { 
  9.         fmt.Println("男"
  10.     } else if gender == "女" { 
  11.         fmt.Println("女"
  12.     } else { 
  13.         fmt.Println("啥都不是???"
  14.   } 

switch case

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

代码

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.     var week = 3 
  7.     switch week { 
  8.     case 1: 
  9.         fmt.Println("周一"
  10.     case 2: 
  11.         fmt.Println("周二"
  12.     case 3: 
  13.         fmt.Println("周三"
  14.     case 4: 
  15.         fmt.Println("周四"
  16.     case 5: 
  17.         fmt.Println("周五"
  18.     case 6: 
  19.         fmt.Println("周六"
  20.     case 7: 
  21.         fmt.Println("周日"
  22.     default://如果上面都没执行,会执行default 
  23.         fmt.Println("星期八????"
  24.   } 

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

Go的switch可以case多个值。

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.     var week = 3 
  7.     switch week { 
  8.     case 1, 2, 3, 4, 5: 
  9.         fmt.Println("上班"
  10.     case 6: 
  11.         fmt.Println("周六睡懒觉"
  12.     case 7: 
  13.         fmt.Println("周日去旅游"
  14.     default
  15.         fmt.Println("飞天了???"
  16.   } 

for

标准for循环

语法

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

代码

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.     for i := 0; i < 10; i++ { 
  7.         fmt.Println(i) 
  8.   } 

无限循环

谨慎执行!!!

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.     for
  7.         fmt.Println("666"
  8.   } 

for range

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

遍历数组示例

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.     var student_list = [...]string{"张三""李四""王五"
  7.     for index, v := range student_list { 
  8.         //index为下标,v是每一个的值 
  9.         fmt.Println(index, v) 
  10.   } 

注:

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

补充:

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

for循环就两种方式。

goto

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

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

示例

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

总结

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

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

本文转载自微信公众号「Go语言进阶学习」,可以通过以下二维码关注。转载本文请联系Go语言进阶学习公众号。