培训首页  >  web前端新闻  >  兄弟连Go语言培训分享之流程控制

兄弟连Go语言培训分享之流程控制

[2018-08-24 09:53:26] 浏览量:37 来源:

北京兄弟连IT

  所有的新技术都经历了一些成长的痛苦,区块链也一样。但是,尽管它还处于发展的早期阶段,但它具有改进许多行业、许多应用和系统的巨大潜力。

 

  Go语言具有其关键特性。Go语言之所以如此强大,是因为它在服务端的开发中总能抓住程序员的痛痒需求,用直接、简单、、稳定的方式来解决并实现问题。

Go语言支持以下几种流程控制语句

条件语句:关键字为 ifelse else if

选择语句:关键字为switchcaseselect(在channel中使用)

循环语句:关键字为 for 和 range

跳转语句:关键字 goto

 

条件语句: if else 和 else if

 

func main() {

   demo :=example(2)

   fmt.Println(demo)

}

 

func example( x int) int  {

   if x == 0 { //不需要将 x==0 括起来,左花括号必须与if在同一行,所有if中的花括号必须存在

      return 1

   }else {

      return x

   }

}

注:if语句允许在if里面声明变量,但是这个变量的作用域只在该条件逻辑块内。

 

选择语句: 不用break结尾,go语言默认每个case最后都带有break

 

func main() {

   var i string = "3"

   switch i {

   case "1":

      fmt.Println("这是1")

   case "2":

      fmt.Println("这是2")

   case "3":

      fallthrough //强制跳到下一个case,必须存在下一个case或者default,否则报错

   case "4":

      fmt.Println("这是4")

   }

}

上面的switch 后面的表达式不是必须的,因此上面的可以修改为:

 

func main() {

   var i int = 3

   switch  {

   case i==1:

      fmt.Println("这是1")

   case i==2:

      fmt.Println("这是2")

   case i==3:

      fallthrough

   case i==4:

      fmt.Println("这是4")

   }

}

循环语句 for range

Go 只有一种循环结构——for 循环。

 

func main() {

   nums := [10]int{1,2,3,4,5,6,7,8,9,10}

   for a,b:=range nums{ //这里的a只索引下标,b指索引下标对应的元素值

      fmt.Println(a,b)

   }

}

当没有循环条件时,将成为死循环

 

for{

   fmt.Println()

}

gotobreakcontinue的使用与区别

Go语言的for循环中也支持使用breakcontinue来控制循环,break是跳出当前循环,continue是跳出本次循环。Go语言中break有个更为的功能:跳转到标签

以下面这个代码为例

 

func main() {

      for i:=0;i<5 ;i++  {

         fmt.Print("  ")

         fmt.Print(i," ")

         for j:=0;j<5 ;j++  {

            fmt.Print(j)

         }

      }

}

----output----

  0 01234  1 01234  2 01234  3 01234  4 01234

加入判断条件与break

 

func main() {

      for i:=0;i<5 ;i++  {

         fmt.Print("  ")

         fmt.Print(i," ")

         for j:=0;j<5 ;j++  {

            fmt.Print(j)

            if j == 3 {

               break

            }

         }

      }

}

----output----

  0 0123  1 0123  2 0123  3 0123  4 0123

再添加自定义loop标签,让break跳出到的标签,注:loop标签可以自定义,我这里标签名叫做loop,你可以命名为其他

 

func main() {

   loop://自定义跳转标签  ①

      for i:=0;i<5 ;i++  {

         fmt.Print("  ")

         fmt.Print(i," ")  

         for j:=0;j<5 ;j++  {

            fmt.Print(j)

            if j == 3 {

               break loop

            }

         }

      }

}

-----output-----

  0 0123

经过上面的测试,我们可以看出:

①未使用loop标签时,break是跳出当前循环

②使用loop标签后,break就会终止loop处的外层循环

loop标签不能使用在break之后,若放在break之前,loop必须是跟break连接成一个整的循环,比如放在代码中的①或②处都可以。

 

breakcontinue是配合for使用的,但goto的使用不限于for,通常与条件语句配合使用。

比如下面这个代码中,当for循环到i=3时,跳转到loop标签输出

 

func main() {

   for i:=0;i<5 ;i++  {

      fmt.Println(i)

      if i == 3 {

         goto loop //跳转带 loop 标签处

      }

   }

   loop:

      fmt.Println("loop 标签")

}

-----output-----

0

1

2

3

loop 标签

loop标签在for循环前面时,这时候 goto跳转到 loop标签就会形成死循环

 

func main() {

loop: // 这里就会形成死循环

   fmt.Println("loop 标签")

   for i:=0;i<5 ;i++  {

      fmt.Println(i)

      if i == 3 {

         goto loop //跳转到 loop标签

      }

   }

}

除了for循环外,其他的使用goto的场景

 

func main() {

   a := 3

   fmt.Println(a+1)

   goto loop

   fmt.Println(a+2)

loop:

   fmt.Println("loop 标签")

}

-----output-----

4

loop 标签

根据上面的测试,我们可以看出:

goto的使用不限于for,通常与条件语句配合使用,可以实现满足某条件后跳出循环体到的地方继续执行。

goto语句可以无条件的进行跳转到行。

goto跳转的标签既可以定义在for循环前面,也可以定义在for循环后面。在for前面时就有可能形成死循环,在for循环后面就会执行标签下面的代码。

④一般情况下,不使用goto语句,很容易造成代码流程混乱。

高能预警,兄弟连教育区块链直播课程8月持续火爆来袭!

原价1188元的12节区块链进阶课程,现仅需1元!

还可取《Go语言基础实战项目开发》与《Go语言实战项目开发》教材两本!!

限量!!先到先得!!

http://www.ydma.cn/open/course/24


关注兄弟连区块链技术公众号领取更多技术干货哦!!!



文中图片素材来源网络,如有侵权请联系删除
  • 软件开发
  • 软件测试
  • 数据库
  • Web前端
  • 大数据
  • 人工智能
  • 零基础
  • 有HTML基础
  • 有PHP基础
  • 有C语言基础
  • 有JAVA基础
  • 其他计算机语言基础
  • 周末班
  • 全日制白班
  • 随到随学

网上报名

热门信息