当前位置:编程学习 > 网站相关 >>

go - 流程控制

流程控制

条件: if else else if switch
循环: for
跳转: goto
关键字: break continue fallthrough range

1. 条件
  1.1 if else
  1.1.1语法:
[plain]
if [声明变量;] condition1 { 
  //... 
[} else if condition2 {] 
  //... 
[} else {] 
  //... 

  if [声明变量;] condition1 {
    //...
  [} else if condition2 {]
    //...
  [} else {]
    //...
  }  1.1.2 注意:
  a. []中的内容为可选,if 条件判断中可以声明变量 :=
  b. {}是必须的, condition 不需要用()括起来, {必须与else/if在同一行代码中
  c. 在有返回值函数中,不允许把“最终的” return 语句放到if else 结构中,否则编译出错

  1.2 switch
  就是多个if...else
  switch后面的表达式可以省略
  注:
  a.
[plain] 
case 3: 
case 4: 
//可以直接写为: 
case 3, 4: 

  case 3:
  case 4:
  //可以直接写为:
  case 3, 4:  b. 自带break

  c. 如果需要匹配成功后,还要继续向下执行,可以用关键字 fallthrough

 


2. 循环
  go语言中只支持 for,无while
  格式:
[plain] view plaincopyprint?
for 表达式1; 表达式2; 表达式3 { 
  //语句 

  for 表达式1; 表达式2; 表达式3 {
    //语句
  }  注:
  a. 表达式1,3支持多重赋值,如i, j [:]= 1, 2
  b. 三个表达式均可以省略,注意死循环
  c. 也有break, continue分别为跳出循环和跳出本次循环, break还可以跳转到标签

  d. for 与 range 配合使用,可遍历slice, array, string等

 


3. 跳转
  goto可以跳转到指定标签位置
[plain] 
标签1: 
标签2: 
goto 标签1 

  标签1:
  标签2:
  goto 标签1  注:

  标签也有作用域,并且区分大小写

 


note_flow_control.go code list


[plain]
package main 
 
import "fmt" 
 
func main() { 
    //if...else... 
    if a, b := 2, 3; a == 2 { 
        fmt.Println("a, b = ", a, b) 
        goto Two 
    } else { 
        goto One 
    } 
 
One: 
    fmt.Println("goto one") 
    fmt.Println("go 1 ?") 
Two: 
    fmt.Println("goto two") 
    fmt.Println("go 2?") 
 
    /********************/ 
    /*运行结果:        */ 
    /*a, b = 2 3        */ 
    /*goto two          */ 
    /*go 2?             */ 
    /********************/ 
 
    //switch 
    num := 2 
    switch num { 
        case 1: 
            fmt.Println("No.1") 
        case 2: 
            fmt.Println("No.2") 
        case 3: 
            fmt.Println("No.3") 
            fallthrough 
        case 4: 
            fmt.Println("No.4") 
        default: 
            fmt.Println("No.-1") 
    } 
    /*********************/ 
    /*运行结果:         */ 
    /*No.2               */ 
    /*如果num=3          */ 
    /*No.3               */ 
    /*No.4               */ 
    /*********************/ 
 
    //for 
    sum := 0 
    for i := 1; i <= 100; i++ { 
        sum += i 
    } 
    fmt.Println("1+2+...+100 = ", sum) //1+2+...+100 = 5050 
    sum2, j := 0, 1 
    for ; j <= 100; j++ { 
        sum2 += j 
    } 
    fmt.Println("1+2+...+100 = ", sum2) //1+2+...+100 = 5050 
    sum3, k := 0, 1 
    for k <= 100 { 
        sum3 += k 
        k++ 
    } 
    fmt.Println("1+2+...+100 = ", sum3) //1+2+...+100 = 5050 
    sum4, k := 0, 1 
    for { 
        sum4 += k 
        k++ 
        if k > 100 { 
            break 
        } 
    } 
    fmt.Println("1+2+...+100 = ", sum4) //1+2+...+100 = 5050 

package main

import "fmt"

func main() {
 //if...else...
 if a, b := 2, 3; a == 2 {
  fmt.Println("a, b = ", a, b)
  goto Two
 } else {
  goto One
 }

One:
 fmt.Println("goto one")
 fmt.Println("go 1 ?")
Two:
 fmt.Println("goto two")
 fmt.Println("go 2?")

 /********************/
 /*运行结果:        */
 /*a, b = 2 3        */
 /*goto two          */
 /*go 2?             */
 /********************/

 //switch
 num := 2
 switch num {
  case 1:
   fmt.Println("No.1")
  case 2:

补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,