链客,专为开发者而生,有问必答!

此文章来自区块链技术社区,未经允许拒绝转载。
区块链分支循环-LMLPHP

分支循环

程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。

一、条件语句

1.1 If语句

语法格式:

if 布尔表达式 {

/* 在布尔表达式为 true 时执行 */

}

if 布尔表达式 {

/* 在布尔表达式为 true 时执行 */

} else {

/* 在布尔表达式为 false 时执行 */

}

if 布尔表达式1 {

/* 在布尔表达式1为 true 时执行 */

} else if 布尔表达式2{

/* 在布尔表达式1为 false ,布尔表达式2为true时执行 */

} else{

/* 在上面两个布尔表达式都为false时,执行*/

}

示例代码:

package main

import “fmt”

func main() {

/* 定义局部变量 */

var a int = 10

/* 使用 if 语句判断布尔表达式 */

if a < 20 {

   /* 如果条件为 true 则执行以下语句 */

   fmt.Printf("a 小于 20\n" )

}

fmt.Printf(“a 的值为 : %d\n”, a)

}

如果其中包含一个可选的语句组件(在评估条件之前执行),则还有一个变体。它的语法是

if statement; condition {

}

if condition{

}

示例代码:

package main

import (

"fmt"

)

func main() {

if num := 10; num % 2 == 0 { //checks if number is even

    fmt.Println(num,"is even")

}  else {

    fmt.Println(num,"is odd")

}

}

需要注意的是,num的定义在if里,那么只能够在该if…else语句块中使用,否则编译器会报错的。

1.2 switch 语句

1.2.1 switch的语法

switch是一个条件语句,它计算表达式并将其与可能匹配的列表进行比较,并根据匹配执行代码块。它可以被认为是一种惯用的方式来写多个if else子句。

switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break。

而如果switch没有表达式,它会匹配true

Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码。

变量var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。

switch var1 {

case val1:

    ...

case val2:

    ...

default:

    ...

}

示例代码:

package main

import “fmt”

func main() {

/* 定义局部变量 */

var grade string = “B”

var marks int = 90

switch marks {

  case 90: grade = "A"

  case 80: grade = "B"

  case 50,60,70 : grade = "C"  //case 后可以由多个数值

  default: grade = "D"

}

switch {

  case grade == "A" :

     fmt.Printf("优秀!\n" )

  case grade == "B", grade == "C" :

     fmt.Printf("良好\n" )

  case grade == "D" :

     fmt.Printf("及格\n" )

  case grade == "F":

     fmt.Printf("不及格\n" )

  default:

     fmt.Printf("差\n" );

}

fmt.Printf(“你的等级是 %s\n”, grade );

}

1.2.2 fallthrough语句

如需贯通后续的case,就添加fallthrough

package main

import (

"fmt"

)

type data [2]int

func main() {

switch x := 5; x {

default:

    fmt.Println(x)

case 5:

    x += 10

    fmt.Println(x)

    fallthrough

case 6:

    x += 20

    fmt.Println(x)



}

}

07-10 23:55