1.Go语言中常用的流程控制
if
与for
是Go语言中最常用的流程控制switch
与goto
主要用于简化代码,降低代码重复
2.if else
2.1 if 条件语句的基本写法
if 条件1{
分支1
} else if 条件2{
分支2
} else {
分支3
}
1.满足条件执行相应分支语句
2.else if
与else
都是可选的
func getAge(){
age := 18
if age >= 36{
fmt.Print("中年")
}else if age >=18{
fmt.Print("青年")
}else if age >=10{
fmt.Print("少年")
}else {
fmt.Print("幼年")
}
}
2.2 if判断语句特殊写法
func getAge(){
if age := 18;age >= 36{
fmt.Print("中年")
}else if age >=18{
fmt.Print("青年")
}else if age >=10{
fmt.Print("少年")
}else {
fmt.Print("幼年")
}
}
age变量作用域不同
3. for 循环
Go语言中所有的循环类型都可以使用for
关键字来完成
3.1 for循环的基本格式
for 初始语句;条件语句;结束语句{
循环体语句
}
1.只要条件语句成立就会不停的执行循环体语句,直到条件语句不成立
func forDemo1(){
for i:=0;i<=10;i++{
fmt.Print(i)
}
}
2.for循环的初始语句可以被省略,但是初试语句后的分号必须写
func forDemo2(){
i := 0
for ;i<=10;i++{
fmt.Print(i)
}
}
- 将结束语句写入循环体
func forDemo3(){
i := 0
for i<=10{
fmt.Print(i)
i++
}
}
3.2 无限循环
for {
循环体语句
}
for循环可以通过break
、goto
、return
、panic
语句强制退出循环
4. for range 键值循环
Go语言中可以使用for range遍历数组、切片、字符串、map 及通道(channel)。 通过for range遍历的返回值有以下规律:
1.数组、切片、字符串返回索引和值。
2.map返回键和值。
3.通道(channel)只返回通道内的值。
5. switch case
5.1 switch 方式1
func main() {
finger := 0
switch finger {
case 1:
fmt.Print("大拇指")
case 2:
fmt.Print("食指")
case 3:
fmt.Print("中指")
case 4:
fmt.Print("无名指")
case 5:
fmt.Print("小指")
default:
fmt.Print("输入有误!")
}
}
- Go语言规定每个switch只能有一个
default
5.2 一个分支可以有多个值,多个case值之间使用逗号隔开
n := 4
switch n {
case 1,3,5,7:
fmt.Print("n属于1,3,5,7")
case 2,4,6,8:
fmt.Print("n属于2,4,6,8")
default:
fmt.Print("不在其中!")
}
5.3 分支还可以使用表达式
这时候switch
语句后面不需要再跟判断变量
age := 18
switch {
case age>60:
fmt.Print("在家享清福")
case age >25 && age <= 60:
fmt.Print("苦逼打工仔")
case age < 25:
fmt.Print("学习最重要")
default:
fmt.Print("年龄输入有误!")
}
6.break(跳出当前循环)
func breakDemo1() {
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 2 {
break
}
fmt.Printf("%v-%v\n", i, j)
}
}
fmt.Println("...")
}
7.continue(结束本次循环,进入下一次循环)
只能在for循环中使用
func continueDemo() {
for i := 0; i < 5; i++ {
// forloop2:
for j := 0; j < 5; j++ {
if i == 2 && j == 2 {
continue
}
fmt.Printf("%v-%v\n", i, j)
}
}