热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Go基础编程:流程控制

Go语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。顺序结构:程序按顺序执行,不发生跳转。选择结构:依据是

Go语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。

  • 顺序结构:程序按顺序执行,不发生跳转。
  • 选择结构:依据是否满足条件,有选择的执行相应功能。
  • 循环结构:依据条件是否满足,循环多次执行某段代码。

选择结构

if语句


if

var a int = 3if a == 3 { //条件表达式没有括号fmt.Println("a==3")}//支持一个初始化表达式, 初始化字句和条件表达式直接需要用分号分隔if b := 3; b == 3 {fmt.Println("b==3")}

if … else

if a := 3; a == 4 {fmt.Println("a==4")} else { //左大括号必须和条件语句或else在同一行fmt.Println("a!=4")}

if … else if … else

if a :&#61; 3; a > 3 {fmt.Println("a>3")} else if a <3 {fmt.Println("a<3")} else if a &#61;&#61; 3 {fmt.Println("a&#61;&#61;3")} else {fmt.Println("error")}

switch语句

Go里面switch默认相当于每个case最后带有break&#xff0c;匹配成功后不会自动向下执行其他case&#xff0c;而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码&#xff1a;

var score int &#61; 90switch score {case 90:fmt.Println("优秀")//fallthroughcase 80:fmt.Println("良好")//fallthroughcase 50, 60, 70:fmt.Println("一般")//fallthroughdefault:fmt.Println("差")}

可以使用任何类型或表达式作为条件语句&#xff1a;

//1switch s1 :&#61; 90; s1 { //初始化语句;条件case 90:fmt.Println("优秀")case 80:fmt.Println("良好")default:fmt.Println("一般")}//2var s2 int &#61; 90switch { //这里没有写条件case s2 >&#61; 90: //这里写判断语句fmt.Println("优秀")case s2 >&#61; 80:fmt.Println("良好")default:fmt.Println("一般")}//3switch s3 :&#61; 90; { //只有初始化语句&#xff0c;没有条件case s3 >&#61; 90: //这里写判断语句fmt.Println("优秀")case s3 >&#61; 80:fmt.Println("良好")default:fmt.Println("一般")}

循环语句

for

var i, sum intfor i &#61; 1; i <&#61; 100; i&#43;&#43; {sum &#43;&#61; i}fmt.Println("sum &#61; ", sum)

range

s :&#61; "abc"for i :&#61; range s { //支持 string/array/slice/map。fmt.Printf("%c\n", s[i])}for _, c :&#61; range s { // 忽略 indexfmt.Printf("%c\n", c)}

跳转语句

break和continue

在循环里面有两个关键操作break和continue&#xff0c;break操作是跳出当前循环&#xff0c;continue是跳过本次循环。

for i :&#61; 0; i <5; i&#43;&#43; {if 2 &#61;&#61; i {//break //break操作是跳出当前循环continue //continue是跳过本次循环}fmt.Println(i)}

当嵌套过深的时候&#xff0c;break和continue还可以跟着标号&#xff0c;用来跳到多重循环中的外层循环&#xff1a;

func main() {
LABEL:for i :&#61; 0; i < 5; i&#43;&#43; {for {fmt.Println(i)break LABEL //跳出所有循环//continue LABEL //只是跳过for {}循环&#xff0c;外层循环继续}}
}

注意&#xff1a;break可⽤于for、switch、select&#xff0c;⽽continue仅能⽤于for循环。

goto

用goto跳转到必须在当前函数内定义的标签&#xff1a;

func main() {
LABEL:for i :&#61; 0; i < 5; i&#43;&#43; {for {fmt.Println(i)//break LABEL //跳出所有循环//continue LABEL //只是跳过for {}循环&#xff0c;外层循环继续goto LABEL //跳转到标签LABEL&#xff0c;从这里开始&#xff0c;执行代码}}
}


推荐阅读
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
author-avatar
好好地经历这每一天
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有