Go语言程序设计(十)选择结构和循环结构

这篇具有很好参考价值的文章主要介绍了Go语言程序设计(十)选择结构和循环结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、if语句

在Go语言中,共提供三种形式的if语句:

  • if语句
  • if else语句
  • if else if语句

if语句的注意事项:

  • 左大括号“{”必须和if语句放在同一行,否则编译会出错
  • 条件表达式和if关键字之间使用空格隔开即可,表达式无需用括号括起来
  • 支持初始化条件表达式,如if a:=1; a>0。在这条语句中,先给条件变量a赋初值,然后再比较。初始化语句和条件语句之间使用“;”隔开。
  • 在有返回值的函数中,不允许在if语句块中执行return语句,否则编译会失败,例如:
func example(x int) int {
    if x==0{
        return 10
    } else {
        return x
    }
}

上述语句在编译时,编译器会报错,错误信息为:

function ends without a return statement

产生失败的原因是Go编译器无法找到终止该函数的return语句。
 

二、switch语句

        switch语句的控制类型由switch 条件表达式决定,控制类型可以是任意Go语言所支持的数据类型。每一个switch分支常量表达式值的类型,必须和控制类型保持一致,如果不一致,必须显式地转换成同一种类型。
        如果同一个switch语句中,有两个或两个以上的switch分支的常量表达式取得相同的值,则编译时会出错。另外,每一个switch语句最多只能有一个default分支。
        switch语句的执行步骤如下:

  • (1)计算出switch表达式的值,并转换成控制类型。.
  • (2)如果switch条件表达式的值等于某个switch分支的常量表达式的值,则程序控制跳转到这个case标号后的语句列表中执行。
  • (3)如果switch条件表达式的值,无法与switch语句中任何一个case常量表达式的值相匹配,而且switch语句中有default分支,则程序会控制跳转到default标号后的语句列表中执行。
  • (4)如果switch条件表达式的值,无法与switch语句中任何一个case常量表达式的值相匹配,且switch语句中没有default分支,则程序控制会跳转到switch语句的结尾,switch语句执行结束。

1、switch语句的特殊形式

(1)多选项case语句:case中可以对多个条件进行测试,任意一个满足都会执行,多个用逗号隔开。

(2)fallthrough语句:在执行完一个case分之后,不退出继续执行下一个case分支

(3)无条件表达式switch语句:switch关键字后面没有条件表达式,则必须在case语句中进行条件判断。

2、switch的注意事项

(1)左大括号“{”必须和switch语句同处一行,否则编译会出错。

(2)条件表达式不限制为常量或者整数。

(3)不需要使用break语句跳出case语句。

(4)和if语句一样,switch语句也支持初始化条件表达式。

三、for语句

        在for语句中,初始化表达式给循环变量赋初值,设置循环的开始位置;条件表达式用于判断是否执行本次循环;步进表达式用于在每次循环体执行后更改循环变量的值。
        for语句的执行步骤如下:

  • (1)先执行初始化表达式,给循环变量赋初值,这一步只执行一遍。
  • (2)执行条件表达式,如果结果为true,则执行循环体中的语句,循环体中的语句执行结束,继续执行步骤(3);如果结果为false, 则结束循环,转到步骤(5)。
  • (3)执行步进表达式,修改循环变量的值。
  • (4)转回步骤(2)继续执行。
  • (5)循环结束,执行for循环体外的语句。

使用for语句的注意事项:

  • (1)for语句中的三个表达式之间用“;”隔开,不能使用括号括起来
  • (2)左大括号“{”必须和for语句放在同-一行,否则编译会出错
  • (3)循环变量的名字尽量要短,比如ij、z或ix等。
  • (4)不要在循环体中修改循环变量的值,否则会造成意想不到的错误,这已经在很多语言中得到了证明。
  • (5)如果使用多个循环变量,Go语言不支持以“,”为间隔的多个赋值语句,必须使用平行赋值的方式来初始化多个变量。

例如,下面的多个循环变量的赋值方式是正确的:

for i,j :=0,10; i<j; i,j=i+1,j-1 {
}

下面的赋值方式是错误的:

for i:=0,j:=10; i< j; i++,j-- {
}

四、跳转语句

1、break语句

        break语句是限定转向语句,它能控制程序流程跳出所在的结构,把程序流程转向所在结构之后。所以,break在for循环结构中的作用就是控制程序流程跳出循环体,即提前结束循环。

2、continue语句

        continue语句用于for循环结构中,它的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环体的判定。

        break语句和continue语句的区别在于:continue语句只结束本次循环,而不是终止整个循环;而break语句则是终止整个循环过程,不再判断执行循环的条件是否成立。

3、goto语句

        和break、continue语句不同,goto语句天生就要和标签(Label)配合来使用。goto 语句可以调整程序执行的位置,它可以让程序无条件跳转到一个标签(Label)之处继续执行。
        其格式如下:

LABEL:
.
.
.
goto LABEL

        goto语句和标签配合使用时,标签的后面要加“:”,另外标签是区分大小写的,若不使用会造成编译错误,使用时要注意。

五、for range语句

        在Go语言中,for语句还可以和range关键字配合,组成forrange语句,forrange语句可以对数组(Array)、切片(Slice)等对象的元素进行遍历。在Go语言中,range可以看作是一个迭代器,当它被调用时,它会从所遍历的数组返回一个键值对(Key-ValuePair)。
        基于不同的数据对象,range返回不同的键值对。当对数组或切片进行遍历时,range返回数组下标作为键(Key),数组下标所对应的元素作为值(Value)。

如果只需要“值”不需要“键”,for range语句可以修改如下:

for _,v : = range str {
        ...
}

        如果没有“_”作为占位符,那么range会把第一个产生的数赋给义。而有了占位符,range首先将key赋给_”,然后再将其丢掉。最后range会将value赋给v,这样才能获得用户所需要的数据。
        如果只需要“键”不需要“值”,for range语句可以修改如下:

for k,_ : = range str {
    ....
}

        解决上面的问题,也可以直接将“值"丢掉。这是因为k本身就在第一位,会 首先获取数据。无论有没有占位符,k都将获取想要的数据。代码如下:文章来源地址https://www.toymoban.com/news/detail-528881.html

for k := range str {
    ......
}

到了这里,关于Go语言程序设计(十)选择结构和循环结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 5、MATLAB程序设计与应用刘卫国(第三版)课后实验五:循环结构程序设计

    5、MATLAB程序设计与应用刘卫国(第三版)课后实验五:循环结构程序设计

    目录 一、  二、  三、  四、  五、 已知 求 y的近似值。当n分别取100、1 000、10 000时,结果是多少? 要求 :分别用循环结构和向量运算(使用sum 函数)来实现。 --------------------------------------- 示例代码 --------------------------------------------- --------------------------------------- 运行结果

    2023年04月26日
    浏览(11)
  • Java程序设计入门教程---循环结构(while)

    Java程序设计入门教程---循环结构(while)

    目录 思考 概念 语法 案例:求1到100的整数和? 案例分析 思考            1. 让你输出10000000000000000句“Hello,world!”,你怎么写代码?            2. 求1到100的整数和? 概念            循环结构程序 多次 循环执行相同或相近的任务。            while循环,也叫作当型循

    2024年02月02日
    浏览(51)
  • SDUT-程序设计基础-实验2-选择结构

    在开始之前,我想要提醒一下大家,在看完答案和解析以后,一定要自己再写一遍,一味的复制粘贴没有任何效果,当然,在解析中有任何看不懂的内容都可以私信我!! 首先,if顾名思义,是如果的意思,即如果满足,即运行,不满足,则跳过。常用的结构,有if,if, e

    2024年02月05日
    浏览(9)
  • Go语言程序设计(六)字典(映射)

            在Go语言中,Map是一种特殊的数据结构,它由一对无序的数据项组成,被称为键值对(Key-value Pair)。其中的一项是键(Key),另外一项是值(Value), Map通过把键映射到值来进行访问,这种方式可以加快数据查找的速度。所以,Map通常也被称作字典(Dictionary)或哈希表(Hash table) ,本

    2024年02月12日
    浏览(9)
  • 4、MATLAB程序设计与应用刘卫国(第三版)课后实验四:选择结构程序设计

    4、MATLAB程序设计与应用刘卫国(第三版)课后实验四:选择结构程序设计

    目录  一、  二、  三、  四、  五、 求分段函数的值   用 if语句实现,分别输出X=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。 ------------- -------- ------------ ------ 示例代码 - -------------------------- ------------------ ------------- -------- ------------ ------ 运行结果 - -------------------------- --------

    2024年02月05日
    浏览(11)
  • Go语言程序设计-第9章--使用共享变量实现并发

    一个能在串行程序中正确工作的函数。如果这个函数在并发调用时仍然能正确工作,那么这个函数是并发安全的。在这里并发调用是指,在没有额外同步机制的情况下,从两个或者多个 goroutine 同时调用这个函数。如果一个类型的所有可访问方法和操作都是并发安全时,则它

    2024年02月02日
    浏览(48)
  • Go语言程序设计(十四)数据I/O对象及操作

            Go语言标准库bufio包,实现了对数据I/O接口的缓冲功能。它封装于接口io.ReadWriter、io.Reader和io.Writer中,并对应创建对象ReadWriter、Reader或Writer,在提供缓冲的同时实现了一些文本基本I/O操作功能。 ReadWriter对象可以对数据I/O接口io.ReadWriter进行输入输出缓冲操作,其结构定

    2024年02月13日
    浏览(8)
  • 南京邮电大学通达学院 高级语言程序设计(C语言) 题库选择、填空、读程序题答案及解析、程序填空答案、编程题答案及代码作用的概括性说明

    关于概念的问题不做解析,都是死东西,也解析不了                                                                                                                                                  

    2024年02月04日
    浏览(18)
  • Golang:Go语言结构

    在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 表达式 注释 接下来让我们来看下简单的代码,该代码输出了\\\"Hello World!\\\": 让我们来看下以上程序的各个部分: 第一

    2024年02月10日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包