【声明】
非完全原创,部分内容来自于学习其他人的理论和B站视频。如果有侵权,请联系我,可以立即删除掉。
一、流程控制
Go语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。
- 顺序结构:程序按顺序执行,不发生跳转。
- 选择结构:依据是否满足条件,有选择的执行相应功能。
- 循环结构:依据条件是否满足,循环多次执行某段代码。
1、 选择结构
和C语言一样,Go语言中的选择结构分为:if
、switch
1.1 if
结构
(1)if
package main //必须有一个main包
import "fmt"
func main() {
//if和{就是条件,条件通常都是关系运算符
if s := true; s {
//左括号和if在同一行
fmt.Println("s = %t", s)
}
}
(2)if…else
package main //必须有一个main包
import "fmt"
func main() {
if a := false; a {
fmt.Println("true")
} else {
//左大括号必须和条件语句或else在同一行
fmt.Println("false")
}
}
(3)if…elseif…else
package main //必须有一个main包
import "fmt"
func main() {
//这种好
a := 10
if a == 10 {
fmt.Println("a == 10")
} else if a > 10 {
fmt.Println("a > 10")
} else if a < 10 {
fmt.Println("a < 10")
} else {
fmt.Println("这是不可能的")
}
}
1.2 switch
结构
Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码
注意:与C语言的区别在于,go语言的switch中的case可以加条件表达式
(1)fallthrough
不跳出case
package main //必须有一个main包
import "fmt"
func main() {
var num int
fmt.Printf("请按下楼层:")
fmt.Scan(&num)
switch num {
//switch后面写的是变量本身
case 1:
fmt.Println("按下的是1楼")
//break //go语言保留了break关键字,跳出switch语言, 不写,默认就包含
fallthrough //不跳出switch语句,后面的无条件执行
case 2:
fmt.Println("按下的是2楼")
//break
fallthrough
case 3:
fmt.Println("按下的是3楼")
//break
fallthrough
case 4:
fmt.Println("按下的是4楼")
//break
fallthrough
default:
fmt.Println("按下的是xxx楼")
}
}
(2)case
后跟条件判断
package main //必须有一个main包
import "fmt"
func main() {
score := 85
switch {
//可以没有条件
case score > 90: //case后面可以放条件
fmt.Println("优秀")
case score > 80: //case后面可以放条件
fmt.Println("良好")
case score > 70: //case后面可以放条件
fmt.Println("一般")
default:
fmt.Println("其它")
}
}
2、循环结构
C语言中的循环结构有:for、while、do…while。而go语言中循环结构只有:for
、range
2.1 for
循环
package main //必须有一个main包
import "fmt"
func main() {
/* for的格式:
for 初始化条件 ; 判断条件 ; 条件变化 {
}
*/
sum := 0
//1) 初始化条件 i := 1
//2) 判断条件是否为真, i <= 100, 如果为真,执行循环体,如果为假,跳出循环
//3) 条件变化 i++
//4) 重复2, 3, 4
for i := 1; i <= 100