链客,专为开发者而生,有问必答!区块链
此文章来自链客区块链技术问答社区,未经容许拒绝转载。测试
程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。spa
1、条件语句code
1.1 If语句图片
语法格式:开发
if 布尔表达式 {rem
/ 在布尔表达式为 true 时执行 /get
}编译器
if 布尔表达式 {string
/ 在布尔表达式为 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 的值为 : %dn", 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("你的等级是 %sn", 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) }
}