多分支不能同时执行两个语句,它会按顺序判断,一个不行就接着判断下一个,直到判断为真跳出判断 或 全部判断结束都不执行
也是只判断一次,switch括号里的是用于判断的变量,case对应不同的值,当输入和case相同,就会执行case后的语句,default则是当所有case都不匹配时会执行的语句
要注意,如果没有在句子后面加break,就会导致当前case执行完成后继续执行下面的句子,直到遇到break或全部执行完
分类
顺序、选择、循环
顺序结构
没有其他流程控制语句时,默认从上到下顺序执行
分支结构
单分支
注意:go语言不允许省略花括号
package main
import "fmt"
func main() {
var a int = 1
if a > 0 {
fmt.Println("a大于0")
}
}
还可以同时赋值和判断
if a := 20; a<50{
fmt.Println("a小于50")
}
双分支
func main() {
var a int
fmt.Println("请输入一个整数")
fmt.Scanln(&a)
if a > 10 {
fmt.Println("你输入的数大于10")
}else {
fmt.Println("你输入的数小于10")
}
}
//或者用这种格式
func main() {
var a int
fmt.Println("请输入一个整数")
fmt.Scanln(&a)
if a > 10 {
fmt.Println("你输入的数大于10")
} else
{
fmt.Println("你输入的数小于10")
}
}
这种格式是错的
多分支
多分支不能同时执行两个语句,它会按顺序判断,一个不行就接着判断下一个,直到判断为真跳出判断 或 全部判断结束都不执行
👆这里a小于10,第一条判断为假,接着判断第二条,也为假,然后结束
👆这里第一条判断为真,然后结束判断,输出语句
func main() {
var a int
fmt.Println("请输入一个整数")
fmt.Scanln(&a)
if a > 9 {
fmt.Println("你输入的数大于10")
} else if a < 9 {
fmt.Println("你输入的数小于10")
}else {
fmt.Println("你输入的数等于9")
}
}
最后的else可以不写(如果没有必要,或者不想判断别的)
func main() {
var a int
fmt.Println("请输入一个整数")
fmt.Scanln(&a)
if a > 9 {
fmt.Println("你输入的数大于10")
} else if a <= 9 {
fmt.Println("你输入的数小于10")
}
}
switch语句
也是只判断一次,switch括号里的是用于判断的变量,case对应不同的值,当输入和case相同,就会执行case后的语句,default则是当所有case都不匹配时会执行的语句
要注意,如果没有在句子后面加break,就会导致当前case执行完成后继续执行下面的句子,直到遇到break或全部执行完
go语言的switch的case可以多个值对应一个的结果
func main() {
var a int
fmt.Println("请输入一个整数")
fmt.Scanln(&a)
switch a {
case 1,2,3,4,5:
fmt.Println("现在是工作日")
case 6,7:
fmt.Println("现在是休息日")
default:
fmt.Println("你输入的不是一个有效数字")
}
}
循环结构
for循环
func main() {
for a := 0;a<10 ;a++ {
fmt.Println(a)
}
}
go语言没有while和do while结构
可以用for来实现while
func main() {
var a int = 0//相当于for的变量初始化
for {
//相当于for里的循环条件
if(a > 10){
break //跳出循环
}
//相当于for的循环体
fmt.Println(a)
a++
}
}
实现do while
var a int = 0//相当于for的变量初始化
for {
//相当于for的循环体
fmt.Println(a)
a++
//相当于for里的循环条件
if(a > 0){
break //跳出循环
}
}
循环退出
1,达成了循环结束条件
2,break、continue
2.1,break,直接跳出循环,不继续执行
2.2,continue,跳出本次循环,本次循环到continue后的语句不再执行,但会继续执行下一次循环