Golang基础之流程控制

0、什么是流程控制?

流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的经脉
Go语言中最常用的流程控制有iffor,而switchgoto主要是为了简化代码,降低重复代码而生的结构,属于扩展类的流程控制

1、for循环

Go语言中的所有循环类型均可以使用for关键字来完成,条件表达式返回true时循环体不停地进行循环,直到条件表达式返回false时自动退出循环。

1.1、for循环常见五大形式

for循环的基本格式如下:

for 初始语句;条件表达式;结束语句{
  	循环体语句
}

第一种形式:在for中声明变量,这种变量作用域仅仅在该循环里,循环结束后变量会被回收

for i :=0 ;i < 10 ; i++ {
  fmt.Println(i)
}

第二种形式:在for循环前先声明变量,该变量作用于该函数内

for循环的初始语句可以被忽略,但是初始语句后的分号必须要写,例如:

i := 0
for ;i < 10 ; i++ {
  fmt.Println(i)
}

第三种形式:循环三个标准值都不在for关键字后写明

for循环的初始语句和结束语句都可以被忽略,例如:

i := 5
for ;i<10;{
  fmt.Println(i)
  i++
}

第四形式:跟 C 或者 Java 中一样,可以让前置、后置语句为空

sum := 1
for sum < 2000{
  sum += sum
}
fmt.Println(sum)

第五种形式:无限循环

for {
  循环语句
}

for循环可以通过breakgotoreturnpanic语句强制退出循环。

1.2、for range(键值循环)

Go语言中可以使用for range遍历数组、切片、字符串、map及通道(channel),通过for range遍历的返回值,有以下规律:

s := "Hello梅州"
for i,v := range s{
  fmt.Printf("%d %c\n",i,v)
}

// 执行结果
0 H
1 e
2 l
3 l
4 o
5 梅
8 州

定义一个数组,然后循环数组的index和value

var array [3]int
array[0] = 111
array[1] = 112
array[2] = 113
for i,v := range array {
  fmt.Println(i,v)
}

// 执行结果
0 111
1 112
2 113

Note:

1.数组、切片、字符串返回索引和值。

2.map返回键和值。

3.通道(channel)只返回通道内的值。

2、if else语句

if条件判断基本写法

if 表达式1 {
  分支1
} else if 表达式2 {
  分支2
} else {
  分支3
}

举个例子:

age := 18
if age > 35{
  fmt.Println("人到中年")
}else if age > 18{
  fmt.Println("青春绽放")
}else{
  fmt.Println("好好学习")
}

if条件判断特殊写法

// age变量此时只在if条件判断语句中生效
if age := 19;age > 18{ // 如果 age > 18 就执行这个{}中的代码
  fmt.Println("成年了!")
}else{ // 否则就执行这个{}中的代码
  fmt.Println("该写暑假作业了!")
}

3、switch case

使用swithch语句可方便对大量的值进行条件判断

switch n {
  case 1:
  fmt.Println("大拇指")
  case 2:
  fmt.Println("食指")
  case 3:
  fmt.Println("中指")
  case 4:
  fmt.Println("无名指")
  case 5:
  fmt.Println("小拇指")
  default:
  fmt.Println("无效的数字")
}

每个switch语句中只能有一个default

switch case特殊写法

switch n:=5;n {
  case 1:
  fmt.Println("大拇指")
  case 2:
  fmt.Println("食指")
  case 3:
  fmt.Println("中指")
  case 4:
  fmt.Println("无名指")
  case 5:
  fmt.Println("小拇指")
  default:
  fmt.Println("无效的数字")
}

switch case多个值

switch n:=5;n {
  case 1,3,5,7,9:
  fmt.Println("呵呵")
  case 2,4,6,8,10:
  fmt.Println("哈哈")
}
posted @ 2020-02-11 15:58  jasonminghao  阅读(176)  评论(0编辑  收藏  举报