Go语言3-程序控制

人们将程序定义为数据结构+算法,而算法的实现通常都是靠程序控制来完成,因此,程序控制对于程序来说,是非常重要的部分。接下来我们来通过本文来了解下Go为我们提供的程序控制。

1、条件语句

 关键字:if、else、else if
     if i := 0; x == i {  //注释1
          return 0
     } else if x == 1 {  //注释2
          return 1
     } else {
          return -1
     }
     注释1:这里可以自定义局部变量,作用域为这个if-else体结束。
     注释2if块不定义局部变量时与这种写法类似,如果这里也定义局部变量,则注释1处的
           if语句块无法引用到这里定义的变量,else语句块可以引用。
 切记:不需要()来包围条件语句,{}为必须的,且必须与关键字同行

2、选择语句

 关键字:switch、case、fallthrough
     switch i {                 //注释1
     case 0:                    //注释2
          fmt.Printf("0")
     case 1:                    //注释3
          fallthrough
     case 2, 3:                 //注释4
          fmt.Printf("2,3,4")
     default:                   //注释5
          fmt.Printf("Default")
     }
释1:{须与switch同行,这里可以有一个初始化表达式,右侧需要跟分号
     注释2:不需要明确的break来退出,默认自动退出
     注释3:当i=1时输出2,3fallthrough关键字会继续执行紧跟的下一个case代码
     注释4:可以一个case中写多个满足条件(i为2,3中的一个即可)
     注释5:以上的都不匹配时执行
 switch后面的表达式不是必需的,这种结构与多个if...else if的逻辑作用等同
     switch {                   //注释1
     case 0 == i:
          fmt.Printf("0")
     case 1 == i:
          fallthrough
     case 2 == i || 3 == i:
          fmt.Printf("2,3,4")
     default:
          fmt.Printf("Default")
     }
     注释1:{这里可以有一个初始化表达式,右侧需要跟分号,如本行可写为switch i := 0; {

3、循环语句

 关键字:for、range、break、continue
 1)for语句的多种格式
 格式1:
     sum := 0
     for i := 0; i < 10; i++ { //注释1
          sum += i
     }
     注释1:不需要()来包围条件语句,{}为必须有的,且{必须与关键字同行
 格式2:
     i, sum := 0, 0
     for {                    //注释1
          if i == 10 {
               break
          }
          sum += i
          i++
     }
     注释1:类似于Java中的while(true)写法
 格式3:
     i, sum := 0, 0
     for i < 10 {
          sum += i
          i++
     }
 2)数组或切片(后面讲解)的两种遍历方式
 写法1:
     mySlice := []int{1, 2, 3, 4}              //注释1
     sum := 0                                  
     for i, l := 0, len(mySlice); i < l; i++ { //注释2
          sum += mySlice[i]
     }
     注释1:定义一个slice
     注释2:赋值语句支持多重赋值(仅支持平行多重赋值)
 写法2:
     for i, v := range mySlice {               //注释1
          sum += v                             //注释2
          //sum +=mySlice[i]
     }
    注释1range有两个返回值,i为索引,v为值。当对map(后面讲解)进行遍历时,range的返回值分别为key,value
    注释2:这里要注意i没有使用,编译错误,请使用_代替

4、跳转语句

 关键字:goto,其实break及continue也有跳转的功能
 三个语法都可以配合标签使用,标签区分大小写
 goto     标签名:调整程序执行位置,标签可以在语句之后定义
 break    标签名:结束与标签同级的for循环,标签必须在语句之前定义
 continue 标签名:结束与标签同级的for循环,标签必须在语句之前定义
     Label1:                             //定义名为"Label1"的标签
          for {                          //无限循环
               for i := 0; i < 10; i++ {  
                    if i > 3 {
                         break Label1    //直接结束Label1同级的for
                    }
               }
          }
 goto、continue的使用大体类似

一路过来,我们发现其实Go是一门非常简单的语言,有其它编程语言基础同学看完这几篇博文触类旁通的就懂了,仅仅写法上的差异,别急,后面的文章将会介绍些Go比较独有的特性。

无闻(unknow)《Go编程基础》
许式伟的 《Go语言编程》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章