热门标签 | 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;执行代码}}
}


推荐阅读
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
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社区 版权所有