文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Go语言流程控制的示例分析

2023-06-29 18:23

关注

这篇文章给大家分享的是有关Go语言流程控制的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

1、流程控制

流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑。

流程控制包含分三大类:条件判断,循环控制和无条件跳转。

2、if 语句

if 也许是各种编程语言中最常见的了,它的语法概括起来就是:

如果满足条件就做某事,否则做另一件事。

Go 里面 if 条件判断语句中不需要括号,如下代码所示:

if x > 10 {    fmt.Println("x is greater than 10")} else {    fmt.Println("x is less than 10")}

Go 的 if 还有一个强大的地方就是条件判断语句里面允许声明一个变量,这个变量的作用域,只能在该条件逻辑块内,其他地方就不起作用了如下所示:

// 计算获取值 x,然后根据 x 返回的大小,判断是否大于 10。if x := computedValue(); x > 10 {    fmt.Println("x is greater than 10")} else {    fmt.Println("x is less than 10")}//这个地方如果这样调用就编译出错了,因为 x 是条件里面的变量fmt.Println(x)

多个条件的时候如下所示:

if count == 3 {    fmt.Println("The count is equal to 3")} else if count < 3 {    fmt.Println("The count is less than 3")} else {    fmt.Println("The count is greater than 3")}

3、goto

Go 有 goto 语句&mdash;&mdash;请明智地使用它。用 goto 跳转到必须在当前函数内定义的标签。

例如假设这样一个循环:

func myFunc() {i := 0Here: //这行的第一个词,以冒号结束作为标签println(i)i++goto Here //跳转到 Here 去 }

标签名是大小写敏感的。

4、for语句

Go 里面最强大的一个控制逻辑就是 for,它即可以用来循环读取数据,又可以当作 while 来 控制逻辑,还能迭代操作。它的语法如下:

for expression1; expression2; expression3 {    //...}

expression1expression2expression3 都是表达式,其中 expression1 和 expression3 是 变量声明或者函数调用返回值之类的,expression2 是用来条件判断,expression1在循环开始之前调用,expression3 在每轮循环结束之时调用。

一个例子比上面讲那么多更有用,那么我们看看下面的例子吧:

package mainimport "fmt"func main(){    sum := 0;    for index:=0; index < 10 ; index++ {    sum += index}    fmt.Println("sum is equal to ", sum)}// 输出:sum is equal to 45

有些时候需要进行多个赋值操作,由于 Go 里面没有,操作,那么可以使用平行赋值 i, j = i+1, j-1。有些时候如果我们忽略 expression1expression3

如下:

sum := 1for ; sum < 1000; {    sum += sum}

其中;也可以省略,那么就变成如下的代码了,是不是似曾相识?

对,这就是 while 的功能。

sum := 1for sum < 1000 {    sum += sum}

在循环里面有两个关键操作 break 和 continue ,break操作是跳出当前循环,continue是跳过本次循环。当嵌套过深的时候,break 可以配合标签使用,即跳转至标签所指定的位置,

详细参考如下例子:

for index := 10; index > 0; index-- {if index == 5{    break // 或者 continue}    fmt.Println(index)}// break 打印出来 10、9、8、7、6// continue 打印出来 10、9、8、7、6、4、3、2、1

break continue 还可以跟着标号,用来跳到多重循环中的外层循环,for 配合 range 可以用于读取 slice 和 map 的数据:

for k,v:=range map {    fmt.Println("map's key:",k)    fmt.Println("map's val:",v)}

由于 Go 支持“多值返回”, 而对于“声明而未被调用”的变量, 编译器会报错, 在这种情况下,可以使用_来丢弃不需要的返回值 例如:

for _, v := range map{    fmt.Println("map's val:", v)}

5、switch

有些时候你需要写很多的 if-else 来实现一些逻辑处理,这个时候代码看上去就很丑很冗长,而且也不易于以后的维护,这个时候 switch 就能很好的解决这个问题。

它的语法如下:

switch sExpr {    case expr1:        some instructions    case expr2:        some other instructions    case expr3:        some other instructions    default:        other code}

sExpr 和expr1、expr2、expr3 的类型必须一致。Go 的 switch 非常灵活,表达式不必是常量或整数执行的过程从上至下,直到找到匹配项;而如果 switch 没有表达式,它会匹配true。

i := 10switch i {case 1:    fmt.Println("i is equal to 1")case 2, 3, 4:    fmt.Println("i is equal to 2, 3 or 4")case 10:    fmt.Println("i is equal to 10")default:    fmt.Println("All I know is that i is an integer")}

在上面代码中,我们把很多值聚合在了一个 case 里面,同时,Go 里面 switch默认相当于每 个case 最后带有break,匹配成功后不会自动向下执行其他 case,而是跳出整个 switch,但是可以使用 fallthrough强制执行后面的 case 代码。

integer := 6switch integer {case 4:    fmt.Println("The integer was <= 4")case 5:    fmt.Println("The integer was <= 5")case 6:    fmt.Println("The integer was <= 6")case 7:    fmt.Println("The integer was <= 7")case 8:    fmt.Println("The integer was <= 8")default:    fmt.Println("default case")}

上面的程序将输出:

The integer was <= 6The integer was <= 7The integer was <= 8default case

感谢各位的阅读!关于“Go语言流程控制的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯