1.if-else(分支结构)
a).格式1
if 表达式1 {
分支1
} else if 表达式2 {
分支2
} else{
分支3
}
b).格式2
if 语句1; 条件表达式 {
//to do
}
注意:
a).左花括号{必须跟在if/else后面,不能另起一行
2.for(循环结构)
for 初始语句;条件表达式;结束语句{
循环体代码
}
for i < 19 { //等价于C语言中的while(i < 19)
i++
}
for i := 0; i < 12; i++ {
//to do
}
for { //死循环,等价于C语言中的while(true)
//to do
}
初 始语 句:用于执行变量初始化,如果变量在此处声明,那么该变量的作用于将被局限在这个for循环内
条件表达式:控制是否循环的开关。对每次循环开始前计算的表达式,如果表达式为true,则循环继续,否则结束循环。
结 束语 句:用于更新循环变量
3.for-range(键值循环)
a).for-range遍历数组/切片/字符串
//index为元素下标,value为元素值
for index, value := range arr {
//to do
}
b).for-range遍历map
//key为map的键,value为key对应的值
for key, value := range map {
//to do
}
c).for-range遍历通道
for v := range c {
fmt.Println(v) //不断从通道中取数据,直到通道被关闭
}
4.switch-case语言
var a = "hello"
switch a {
case "hello":
fmt.Println(1)
case "world":
fmt.Println(2)
default:
fmt.Println(0)
}
//一分支多值
var a = "mum"
switch a {
case "mum", "daddy":
fmt.Println("family")
......
}
//类if
var r int = 11
switch {
case r > 10 && r < 20:
fmt.Println(r)
......
}
//跨case的fallthrough
var s = "hello"
switch {
case s == "hello":
fmt.Println(s)
fallthrough
case s != "world": //若前面有fallthrough,则忽略当前case的条件表达式,执行后面的代码
fmt.Println("world")
}
5.break
break语句可以结束for、switch和select的代码块。break语句还可以在语句后面添加标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的for、switch和select代码块上。