Golang学习笔记(三):控制流

2020-01-28 11:35:42王冬梅

}

-----------------------------

for { //无限循环
    dosomething()
}

for {
    a++
    if a > 10 {
        break
    }
}

-----------------------------

2.说明

a. 初始化和步进表达式可以使多个值:必须使用平行赋值
    i, j:=0,len(a)-1; i<j; i,j=i+1,j-1
b.每次循环都会重新检查条件表达式

3.示例

package main

func main(){
    ss := "abcd"
    for i:=0; i<len(ss); i++ {
        println(ss[i])
    }
}

得到:

97
98
99
100

4.配合range

for循环和保留字range一起使用,完成迭代器iterator操作

string, array, slice, map, channel都可以用range进行迭代器操作

range返回序号和值,若是不想要,可以用_

  for i, c := range "abc" {
      fmt.Printf("s[%d] = %cn", i, c)
  }

得到

  s[0] = a
  s[1] = b
  s[2] = c

SWITCH

python里面没有

1.语法

支持初始化表达式

switch a:=5; a { //默认break,匹配成功后不会自动向下执行其他case,而是跳出整个switch
    case 0:         //普通
        println(a)
    case 1, 2:      //多个分支,逗号分隔
        println(a)
    case 100:       //什么都不做
    case 5:
        println(a)
        fallthrough   //进入后面的case 进行处理,而不是跳出block
    default:
        println(a)    //默认
}
注意,不需要break来明确退出一个case,一旦条件符合,自动终止,除非使用fallthough

--------------

可以不带表达式
switch sExpr {
        case expr1: //sExpr和expr1必须类型一致,不限制为常量或者证书,可以用任何类型或表达式
            ...
}

switch {
    case 0 <= Num && Num <= 3:
        fmt.Printf("3")
}

几种形式:

a := 1
switch a {
    case 0: