Go语言学习笔记--控制结构

If-else结构:

  1. 即使当前代码块之间只有一条语句时,大括号也不可被省略
  2. 关键字if和else之后的左大括号{必须和关键字在同一行,如果你使用了else-if结构,则前段代码的又大括号必须和else-if关键字在同一行。
  3. 可以再if后面加上初始化语句,但是必须加上分号

               

​
if condition1 {

// do something

} else if condition2 {

// do something else

}else {

// catch-all or default

}

if initialization; condition {

// do something

}

​

 

switch结构:

  1. 变量var1可以使任何类型,val1和val2则可以使同类型的任意值
  2. 每一个case分支都是唯一的,从上至下逐一测试,直到匹配为止。一旦成功地匹配到某个分支,在执行完相应代码后就会推出整个switch代码块。不需要特别适用break语句。
  3. 如果执行完每个分支的代码后,还希望继续执行后续分支的代码,可以适用fallthrough关键字来达到目的。
  4. switch语句的第二种形式是不提供任何被判断的值,然后在每个case分支中进行测试不同的条件。类似if-else语句。
  5. switch语句的第三种形式是包含一个初始化语句。
第一种结构:

switch var1 {

case val1:

...

case val2:

...

default:

...

}

第二种结构:

switch {

case condition1:

...

case condition2:

...

default:

...

}

第三种结构:

switch initialization {

case val1:

...

case val2:

...

default:

...

}

for结构:

  1. 基于计数器的迭代
    1. for 初始化语句; 条件语句; 修饰语句 {}
    2. condition不需要括号,但是需要分号,左花括号和for同一行
for i := 0; i < 5; i++ {

    fmt.Printf("This is the %d iteration\n", i)

}

 

  1. 基于条件判断的迭代,类似while循环
    1. For 条件语句 {}
for i >= 0 {

i = i - 1

    fmt.Printf("The variable i is now: %d\n", i)

}
  1. 无限循环:
    1. for { }
  2. For-range结构
    1. 可以迭代任何一个结合,包括数组和map,类似python的foreach语句
for ix, val := range coll { }
  1. val始终为集合中对应索引的值拷贝,只具只读相纸,任何修改都不会影响到集合中原油的值。除非val为指针,则会产生指针的拷贝,会修改原值

break和continue

  1. 多层循环语句中,break的作用是跳出本层循环
  2. 在switch和select语句中,break语句的作用是跳过整个代码块,执行后续的代码
  3. continue忽略剩余的循环体而直接进入下一次循环的过程

标签与goto

  1. 标签和goto是不被鼓励使用的,如果使用,应当只是用正序的标签(标签位于goto语句之后)
  2. 标签和goto语句之间不能出现定义新变量的语句,否则会导致编译失败

select结构:

  1. 后续channel中介绍

猜你喜欢

转载自blog.csdn.net/cbmljs/article/details/82383439