大蟒蛇python教程共享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 语句——请明智地使用它。用 goto 跳转到必须在当前函数内定义的标签。

例如假设这样一个循环:

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

标签名是大小写敏感的。

4、for语句

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

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

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

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

package main  import "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 := 1  for ; sum < 1000; {      sum += sum  }

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

对,这就是 while 的功能。

sum := 1  for 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 := 10  switch 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 := 6  switch 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 <= 6  the integer was <= 7  the integer was <= 8  default case

到此这篇关于go语言流程控制详情的文章就介绍到这了,更多相关go流程控制内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

需要了解更多python教程分享Go语言流程控制详情,都可以关注python教程分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/pythontutorial/1069827.html

(0)
上一篇 2022年3月31日
下一篇 2022年3月31日

精彩推荐