5.1 if-else结构
if else语句和其他语言大同小于。
if语句可以有表达式:
package main
import "fmt"
func main() {
i := 123
if k := i - 1; k > 100 {
fmt.Println("k: ", k)
}
}
在if花括号内定义的变量,和if语句之外的是不相同的,外部的会暂时被隐藏。
package main
import "fmt"
func main() {
i := 123
if k := i - 100; k > 100 {
var k = 99
fmt.Println("k: ", k) //99
} else {
fmt.Println("k: ", k) //23
}
}
5.2 switch结构
switch var1 {
case val1:
…
case val2:
…
default:
…
}
var1可以是任意类型,但是val1,val2,。。。则必须是同类型的。
顺序执行,执行case匹配上。不需要break来结束。
在case内,可以使用fallthrough语句来让匹配上了该case,也不退出,继续执行下面的语句。
case 1 : fallthrough
default语句相当于if else的else,是匹配不上才执行的。
5.3 for结构
for是循环结构。
for结构一般使用三种场景:
- for i :=1;i < 5;i++{}
- for i > 10{}
- for i := rang var{}
第一种是计数器循环,第二种是条件循环,第三种是迭代循环。
迭代循环可以循环字符串,数组,切片,map等。
忽略表达式,则为无限循环,for {}。
5.4 break和continue
break是退出当前循环体,contine是退出本次循环,进入下一次循环。
在嵌套循环体中,break会退出最内层的循环体。
continue只能用于for循环中。
5.5 标签与goto
来看一下标签的例子:
package main
import "fmt"
func main() {
LABEL1:
for i := 0; i <= 5; i++ {
for j := 0; j <= 5; j++ {
if j == 4 {
continue LABEL1
}
fmt.Printf("i is: %d, and j is: %d\n", i, j)
}
}
}
当j ==4的时候,遇到LABEL1标签,标签是作用在外部循环的,所以此时把i循环进入下一个循环,j循环不执行了。如果把continue改成break,则直接退出外循环。
使用goto关键配合标签,可以实现循环的效果。
package main
import "fmt"
func main() {
i := 123
LABEL1:
if i == 100 {
fmt.Println("123")
return
}
i--
goto LABEL1
}
上一篇:第四章-基本结构和数据类型
下一篇:第六章-函数