【Go语言】流程控制

103 阅读11分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情

if语句分析

1. 结构:

if 表达式为true {

执行语句

}

结构分解:img

解析:在Go语言中,代码块必须由花括号包裹。另外,这里的条件表达式是指其结果类型是bool的表达式。if条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。该表达式中使用true达成执行条件输出true。

2. 举例: 请用if语句判断bool类型进行输出。

 if true {                                                         //if语句判断
    fmt.Println("true")                                            //语句&表达式输出
 }      

终端输出:img

结构解析:

 if true {                                                         //if语句判断
  }  

if* *语句判断:**if条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。该语句使用true达成执行条件输出true。

 fmt.Println("true")                                            //语句&表达式输出

语句&表达式输出:fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。函数内语句依照main函数内依次执行。

if…else 语句分析

1. 结构:


if 条件1

{

当条件为 true 时执行的代码

}

else if 条件2

{

当条件不为 true 时执行的代码

}

else {

}

结构分解:img

解析: 在Go语言中,代码块必须由花括号包裹。另外,这里的条件表达式是指其结果类型是bool的表达式。if条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。此语句中先执行判断语句如果判断结果为true,则执行第一个条件下的语句表达式,若为false则继续往下判断执行第二个语句判断,如果判断结果为true,则执行第二个语句表达式,如此往复知道输出结束。

2. 举例: 请用if…else 语句判断条件进行输出。

 total := 10                                                      //变量的声明
 if total < 10 {                                                    //条件判断
    fmt.Println("total<10")                                        //语句&表达式输出
 } else if total == 10 {
    fmt.Println("total=10")
 } else {
    fmt.Println("total>10")
 }      

终端输出:img

结构解析:

 total := 10                                                      //变量的声明    

变量的声明赋值: Go语言是静态类型语言,因此变量(variable)是有明确类型的。编译器会检查函数调用中,变量类型的正确性。在数学概念中,变量表示没有固定值且可改变的数。但从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存。

 if total < 10 {                                                    //条件判断
 } else if total == 10 {
 } else {
 } 

if…else 语句判断: if条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。此语句中先执行判断语句如果判断结果为true,则执行第一个条件下的语句表达式,若为false则继续往下判断执行第二个语句判断,如果判断结果为true,则执行第二个语句表达式,如此往复知道输出结束。

 fmt.Println("total<10")                                        //语句&表达式输出
 fmt.Println("total=10")
 fmt.Println("total>10")

语句&表达式输出:fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。函数内语句依照main函数内依次执行。

if 嵌套语句分析

1. 结构:

if 布尔表达式 1 {

if 布尔表达式 2 {

}

}

结构分解img

解析: 在Go语言中,代码块必须由花括号包裹。if条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。在if嵌套语句中执行时,语句先判断第一个条件表达式,当布尔判断类型为true时,进入第二层嵌套语句判断,再次判断布尔语句的条件,依旧为true则输出语句表达式。

2. 举例: 请用if 嵌套语句判断条件进行输出。

 name := "知链区块链人才培养摇篮"                              //变量的声明
 age := 20180516                                              
 if name == "知链区块链人才培养摇篮" {                          //if嵌套语句
    if age == 20180516 {
       fmt.Println("恭喜你学会了if 嵌套语句")                    //语句&表达式输出
    }
 } 

终端输出:img

结构解析:

name := "知链区块链人才培养摇篮"                              //变量的声明
age := 20180516    

变量的声明赋值: Go语言是静态类型语言,因此变量(variable)是有明确类型的。编译器会检查函数调用中,变量类型的正确性。在数学概念中,变量表示没有固定值且可改变的数。但从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存。

if name == "知链区块链人才培养摇篮" {                          //if嵌套语句
   if age == 20180516 {
   }
}     

if* *嵌套语句判断:**在if嵌套语句中执行时,语句先判断第一个条件表达式,当布尔判断类型为true时,进入第二层嵌套语句判断,再次判断布尔语句的条件,依旧为true则输出语句表达式。

fmt.Println("恭喜你学会了if 嵌套语句")                    //语句&表达式输出

语句&表达式输出:fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。函数内语句依照main函数内依次执行。

switch无表达式的语句分析

1. 结构:

switch var1 {

case val1:

...

case val2:

...

default:

...

}

结构分解:img

解析:在Go语言中,代码块必须由花括号包裹。另外,这里的条件表达式是指其结果类型是bool的表达式。变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。

2. 举例: 请用switch无表达式语句进行判断输出。

var i = 0                                                     //变量的声明赋值
switch i {                                                 //switch无表达式语句输出
case 0:
   fmt.Println(0)
case 1:
   fmt.Println(1)
case 2:
   fmt.Println(2)
default:
   fmt.Println("default")
}

终端输出:img

结构解析:

var i = 0                                                     //变量的声明赋值

变量的声明赋值: Go语言是静态类型语言,因此变量(variable)是有明确类型的。编译器会检查函数调用中,变量类型的正确性。在数学概念中,变量表示没有固定值且可改变的数。但从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存。

switch i {                                                 //switch无表达式语句输出
case 0:
case 1:
case 2:
default:
   }

switch* *无表达式语句:**switch语句从字面上讲,可以称为开关语句,当然理解上不要以为就只有开和关,可以想象它是一个多路开关。它是一种多分支结构。它的使用基于不同条件执行不同动作,每一个 case 分支都是唯一的,所有 case 分支的参数必须是相同的类型,语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break 默认自动终止。

fmt.Println(0)                                        //语句&表达式输出
fmt.Println(1)
fmt.Println(2) 
fmt.Println("default")

语句&表达式输出:fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。函数内语句依照main函数内依次执行。

switch有表达式的语句分析

1.结构:

switch(表达式)

{

case 常量表达式1:语句1

case 常量表达式2:语句2

case 常量表达式n-1:语句n-1

default:语句n

}

结构分解:img

解析:在Go语言中,与if语句一样,switch语句还可以包含初始化语句,且其出现位置和写法也如出一辙。在表达式的过程中首先计算出表达式的值。其次,和case依次比较,一旦有对应的值,就会执行相应的语句,最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

2. 举例: 请用switch有表达式语句进行判断输出。

switch name := names[0]; name {                     //switch有表达式语句输出
case "知链":
   fmt.Println("知链")
case "区块链":
   fmt.Println("区块链")
case "人才培养":
   fmt.Println("人才培养")
case "摇篮":
   fmt.Println("摇篮")
default:
   fmt.Println("知链区块链人才培养摇篮")
}

终端输出:img

结构解析:

switch name := names[0]; name {                      //switch有表达式语句输出
case "知链":
case "区块链":
case "人才培养":
case "摇篮":
default:
}

switch* *有表达式语句:**switch语句从字面上讲,可以称为开关语句,当然理解上不要以为就只有开和关,可以想象它是一个多路开关。它是一种多分支结构。它的使用基于不同条件执行不同动作,每一个 case 分支都是唯一的,所有 case 分支的参数必须是相同的类型,语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break 默认自动终止。

fmt.Println("知链")                                       //语句&表达式输出
fmt.Println("区块链")
fmt.Println("人才培养")
fmt.Println("摇篮")
fmt.Println("知链区块链人才培养摇篮")

语句&表达式输出:fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。函数内语句依照main函数内依次执行。

switch多表达式的语句分析

1. 结构:

swtich(表达式) {

case 常量1,常量2,常量3 : 语句1

case 常量4 : 语句3

case 常量5 : 语句4

default: 语句n

}

结构分解: img

解析:在Go语言中,与if语句一样,switch语句还可以包含初始化语句,且其出现位置和写法也如出一辙。在表达式的过程中首先计算出表达式的值。它的使用基于不同条件执行不同动作,与一般的单一条件表达式不同的是,每一个 case 分支的表达式不是唯一的可以有多个,但依旧所有 case 分支的参数必须是相同的类型,语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break 默认自动终止。

2. 举例: 请用switch多表达式语句进行判断输出。

var t = 1                                                     //变量的声明赋值
switch t {                                                  //switch有表达式语句输出
case 0, 1:
   fmt.Println("知链科技")
case 2:
   fmt.Println("区块链")
default:
   fmt.Println("default")
}

终端输出: img

结构解析:

var t = 1                                                     //变量的声明赋值

变量声明赋值:在Go语言中给变量的声明赋值可以分为三个阶段,先创建变量,在内存中开辟空间后再初始化变量,将变量初始化为underfined,最后再进行真正赋值。

switch t {                                                  //switch有表达式语句
case 0, 1:
case 2:
default:
   }

switch* 多表达式语句:switch语句从字面上讲,可以称为开关语句,当然理解上不要以为就只有开和关,可以想象它是一个多路开关。它是一种多分支结构。 它的使用基于不同条件执行不同动作,与一般的单一条件表达式不同的是,每一个 case 分支的表达式不是唯一的可以有多个,但依旧所有 case 分支的参数必须是相同的类型,语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break 默认自动终止。*

fmt.Println("知链科技")                                        //语句&表达式输出
fmt.Println("区块链")
fmt.Println("default")

语句&表达式输出:fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。函数内语句依照main函数内依次执行。

switch多表达式的条件语句分析

1. 结构:

swich(表达式)

{

case 表达式1&&表达式2 :语句1case 表达式2&&表达式3:语句2case 表达式3&&表达式4:语句3;

...

default 表达式.. :语句n+1;

}

结构分解: img

解析: 在Go语言中,与if语句一样,switch语句还可以包含初始化语句,且其出现位置和写法也如出一辙。在表达式的过程中首先计算出表达式的值。它的使用基于不同条件执行不同动作,与一般的单一条件表达式不同的是,条件表达式中的匹配条件不是单一的,而是多条件复合条件匹配,他们在书写时不需要使用括号{}括起来,而在多条件复合情况下必须满足该case后的所有条件后语句才能执行。其次与其他switch语句情况不同的是各case和 default子句的先后顺序是可以变动的,且不会影响程序结果。

2. 举例: 请用switch条件表达式语句进行判断输出。

var a4 = 10                                                   //变量的声明赋值
switch {                                                 //switch条件表达式语句输出
case a4 >= 0 && a4 < 10:
   fmt.Println("a4 > 0 and a4 < 10")
case a4 >= 10 && a4 < 20:
   fmt.Println("a4 > 10 and a4 < 20")
default:
   fmt.Println("default")
}

终端输出: img

结构解析:

var a4 = 10                                                   //变量的声明赋值

变量声明赋值:在Go语言中给变量的声明赋值可以分为三个阶段,先创建变量,在内存中开辟空间后再初始化变量,将变量初始化为underfined,最后再进行真正赋值。

switch {                                                 //switch条件表达式语句输出
case a4 >= 0 && a4 < 10:
case a4 >= 10 && a4 < 20:
default:
}

switch* *条件表达式语句:**条件表达式的使用基于不同条件执行不同动作,与一般的单一条件表达式不同的是,条件表达式中的匹配条件不是单一的,而是多条件复合条件匹配,他们在书写时不需要使用括号{}括起来,而在多条件复合情况下必须满足该case后的所有条件后语句才能执行。其次与其他switch语句情况不同的是各case和 default子句的先后顺序是可以变动的,且不会影响程序结果。

fmt.Println("a4 > 0 and a4 < 10")                         //语句&表达式输出
fmt.Println("a4 > 10 and a4 < 20")
fmt.Println("default")

语句&表达式输出:fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。函数内语句依照main函数内依次执行。