当前位置:网站首页>7 天找个 Go 工作,Gopher 要学的条件语句,循环语句 ,第3篇
7 天找个 Go 工作,Gopher 要学的条件语句,循环语句 ,第3篇
2022-08-04 14:32:00 【华为云】
本篇博客重点内容
来到 Go 语言学习的第 3 篇博客,本篇将涉及两种 Go 语句,其一是分支,即条件判断,其二是循环。
条件判断语句又细分为 if 语句,if else 语句,if 嵌套语句,switch 语句,select 语句,对于以往的 Python 学习者,
上述内容只有 switch 和 select 语句需要反复学习一下。
select 语句类似于 switch 语句,只是 select 会随机选择一个可运行的 case 执行。
由于有其它语言的经验,这里重点看的就是语法结构。
if 语句
语法结构如下所示:
if 布尔表达式{ /* 待执行内容 */}
带上 else
之后,语法结构如下所示:
if 布尔表达式{ /* TODO */}else{ /* TODO */}
if 嵌套相关知识和其它语言一致,可以直接学习。
switch 语句
该语句在 Python 中不存在,但其它语言基本都有,语法结构如下所示:
switch vari{ case vari1: //TODO case vari2: //TODO}
switch 的 case 子句,默认带 break 语句,所以匹配到其中任意一个分支,都会终止语句,进入 switch 代码后继续运行。
switch 语句还可以用 type-switch
来判断变量类型,语法结构如下所示:
switch var1.(type){ case type: // TODO case type: // TODO}
在 Go 语言中,case 是一个独立的代码块,而且执行完毕不会像 C 语言一样继续执行下一个 case,如果希望实现,可以使用 fallthrough
关键字实现,不过以橡皮擦的经验看,这个知识点不用刻意掌握,毕竟 switch 设计的初衷,就是不希望出现跨 case 运行的情况出现。
select 语句
select 与 switch 语句类似,它会随机执行一个可运行的 case,如果没有 case,就会阻塞,这里有一个新的概念,叫做 Go Channel,这部分我们预留一下,后续学到在细聊。
Go 循环
循环语句看了一下,并无太多特殊点,而且 Go 只支持 for 循环,知识点减少了一些,不过 Go 循环的语法与 Python 有一些差异,例如下述 Demo。
package mainimport "fmt"func main() { sum := 0 for i := 0; i < 10; i++ { sum += i } fmt.Println(sum)}
抽象一下语法结构,得到下述格式:
for init;condition;post { }
其中各参数说明如下:
init
:赋值表达式,给控制变量赋值;condition
:关系表达式或逻辑表达式,控制条件;post
:也是赋值表达式,对init
进行增减控制。
其中 init
和 post
为可选参数,可以省略,即下述代码正常运行。
package mainimport "fmt"func main() { sum := 1 for ;sum <= 20; { sum += sum } fmt.Println(sum)}
上述 for
语句后面的分号 ;
可以省略,即下述代码。
for sum <= 20{ sum += sum}
这里与其它语言不同的是 for
后面的内容不需要括号,如果希望实现类似 while
的无限循环,直接省略 for
后面的内容即可。
package mainfunc main() { sum := 0 for { sum++ if sum > 100 { break } }}
这里必须要注意如下内容,其中涉及了 Go 的语法格式。
- for 后面的大括号,必须与 for 在同一行;
- Go 语言中也支持 continue 和 break 控制循环,而且有一个更高级的 break 用法,可以终止指定循环(即终止标号 label 所在的循环);
package mainimport "fmt"func main() { // 不使用标记 label fmt.Println("使用 break 标记") for i := 1; i <= 10; i++ { fmt.Printf("i: %d\n", i) } // 使用标记 label fmt.Println("不使用 break 标记")re: for i := 1; i <= 10; i++ { fmt.Printf("i: %d\n", i) if i > 5 { break re } }}
continue
标记与 break
用法一致,只是其含义表示跳出当前循环,进入下一循环。
边栏推荐
- Basic Introduction for PLSQL
- Cisco-小型网络拓扑(DNS、DHCP、网站服务器、无线路由器)
- CCF GLCC officially opened | Kyushu Cloud open source experts bring generous bonuses to help universities promote open source
- 【Today in History】August 4: First female Turing Award winner; NVIDIA acquires MediaQ; first Cybersecurity Challenge completed
- Kyushu Cloud attended the Navigator Online Forum to discuss the current status, challenges and future of 5G MEC edge computing
- Keycloak 6.0.0 正式发布,身份和访问管理系统
- JCMsuite应用:倾斜平面波传播透过光阑的传输
- 基于 Next.js实现在线Excel
- 爬虫——selenium基本使用、无界面浏览器、selenium的其他用法、selenium的cookie、爬虫案例
- 并发程序的隐藏杀手——假共享(False Sharing)
猜你喜欢
浙江大学团队使用基于知识图谱的新方法,从空间分辨转录组数据中推断细胞间通信状况
Lixia Action | Kyushu Yunzhang Jinnan: Open source is not a movement for a few people, popularization is the source
Technology sharing | Description of the electronic fence function in the integrated dispatching system
MySQL【窗口函数】【共用表表达式】
Problem solving-->Online OJ (18)
在腾讯,我的试用期总结!
Almost all known protein structures in the world are open sourced by DeepMind
MySQL【触发器】
Technology sharing | Mini program realizes audio and video calls
代码随想录笔记_动态规划_1049最后一块石头的重量II
随机推荐
基本介绍PLSQL
【 HMS core 】 【 Media 】 online video editing service 】 【 material can't show, or network anomalies have been Loading state
字符串类的设计与实现_C语言字符串编程题
【HMS core】【Media】【视频编辑服务】 在线素材无法展示,一直Loading状态或是网络异常
RS|哨兵二号(.SAFE格式)转tif格式
Google plug-in. Download contents file is automatically deleted after solution
属于程序猿的浪漫
Crawler - basic use of selenium, no interface browser, other uses of selenium, cookies of selenium, crawler cases
idea removes spark logs
word2003按空格键为什么会出现小数点
量化细胞内的信息流:机器学习时代下的研究进展
Oracle 数据库用户创建、重启、导入导出
Chinese valentine's day, of course, to learn SQL optimization better leave work early to find objects
[The Art of Hardware Architecture] Study Notes (1) The World of Metastability
leetcode:259. 较小的三数之和
leetcode:215无序数组中找第k大的元素
C# winforms 输入颜色转换颜色名
xampp安装包含的组件有(php,perl,apche,mysql)
AOSP built-in APP franchise rights white list
[深入研究4G/5G/6G专题-50]: URLLC-16-《3GPP URLLC相关协议、规范、技术原理深度解读》-10-高可靠性技术-1-低编码率编码调制方案MCS与高可靠性DRB