1,流程控制
1.1 分支控制
1.1.1 分支控制代码演示
package main
import "fmt"
//分支控制就是让程序有选择的执行
//单分支
//双分支
//多分支
func main() {
var age int
fmt.Println("输入年龄")
fmt.Scanln(&age)
result := someBranch(age)
fmt.Println(result)
}
//单分支
func oneBranch(data int) string {
//如果data大于18输出年龄大于18要对自己的行为负责
if age := data; age >= 18 {
return "龄大于等于18要对自己的行为负责"
}
return "龄小于18,不用负责"
}
//双分支
//注意,只要有一个条件成立,直接退出if,else
func twoBranch(data int) string {
if age := data; age >= 18 {
return "龄大于等于18要对自己的行为负责"
} else {
return "龄小于18,不用负责"
}
}
//多分支
func someBranch(data int) string {
var result string
if data > 10 {
result += "大于10岁,"
} else if data > 18 {
result += "大于18岁"
} else if data > 28 {
result += "大于28岁"
} else {
result += "不满10岁,判断结束"
}
return result
}
1.1.2 嵌套分支介绍
1.1.3 嵌套分支代码演示
package main
import "fmt"
//参加百米运动会,如果用时8秒以内则进入决赛
//否则显示淘汰,进入决赛后根据男子组个女子组分组
func main() {
demo1()
}
//使用if else实现
func demo1() {
var second float64
fmt.Println("请输入秒数")
fmt.Scanln(&second)
if second <= 8 {
fmt.Println("进入决赛")
var gender string
fmt.Println("输入性别")
fmt.Scanln(&gender)
if gender == "男" {
fmt.Println("进入男子组决赛")
} else if gender == "女" {
fmt.Println("进入女子组决赛")
} else {
fmt.Println("未知生物不可参赛")
}
} else {
fmt.Println("淘汰")
}
}
1.2 switch
1.2.1 switch介绍
1.2.2 switch分支控制案例
package main
import "fmt"
func main() {
//接收一个字符a,b,c,d,e,f,g
//a表示星期一,b表示星期二
var key byte
fmt.Println("输入一个字符a,b,c,d,e,f,g")
fmt.Scanf("%c", &key)
switchDemo(key)
}
func switchDemo(data byte) {
switch data {
case 'a', 's':
fmt.Println("星期1")
case 'b':
fmt.Println("星期2")
case 'c':
fmt.Println("星期3")
case 'd':
fmt.Println("星期4")
case 'e':
fmt.Println("星期5")
case 'f':
fmt.Println("星期6")
case 'g':
fmt.Println("星期天")
default:
fmt.Println("不能识别的支字符")
}
}
1.2.3 switch细节
1.3 循环控制
1.3.1 循环控制介绍![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c2a605203060d5f7c05321c906a2ce56.png)
1.3.2 循环控制入门
package main
import "fmt"
func main() {
demo04()
}
//第一种写法
func demo01() {
for i := 1; i <= 10; i++ {
fmt.Println("你好i linailong", i)
}
}
//第二种写法
func demo02() {
j := 1
for j <= 10 {
fmt.Println("你好j linailong", j)
j++
}
}
//第三种写法
func demo03() {
k := 1
for {
if k <= 10 {
fmt.Println("ok")
} else {
break //break表示跳出整个for循环
}
k++
}
}
//第四种写法
func demo04() {
str := "hello,world 北京"
//for循环的时候中午会乱码,rune可以解决中文乱码
str2 := []rune(str)
for i := 0; i < len(str2); i++ {
fmt.Printf("for--- %c \n", str2[i])
}
fmt.Printf("---------------------")
//range可以处理字符串中有中文的情况
for index, val := range str {
fmt.Printf("index=%d, val=%c \n", index, val)
}
}
1.3.3 注意事项
1.4 break
1.4.1 break介绍
1.4.1 break演示
package main
import (
"fmt"
"math/rand"
"time"
)
//随机生成1~100的一个数,只到生成到99这个数,看看一共用了几次
func main() {
i := 1
for {
//为了生成一个随机数要给rand设置一个种子
rand.Seed(time.Now().UnixNano())
//随机生成1~100的一个数
sun := rand.Intn(100) + 1
i++
if sun == 99 {
break
}
}
fmt.Println("生成99一共用了", i)
}
1.5 continue
1.5.1 continue介绍
1.5.2 continue演示
package main
import "fmt"
func main() {
//label1:
for i := 0; i < 4; i++ {
for j := 0; j < 10; j++ {
if j == 2 {
continue //默认跳出最近的循环
//continue label1
}
fmt.Println("j =", j)
}
}
}
2,goto
2.1 goto介绍
2.1 goto演示
package main
import "fmt"
func main() {
fmt.Println("ok1")
fmt.Println("ok2")
goto label1
fmt.Println("ok3")
fmt.Println("ok4")
fmt.Println("ok5")
fmt.Println("ok6")
fmt.Println("ok7")
fmt.Println("ok8")
label1:
fmt.Println("ok9")
fmt.Println("ok10")
}
3,return
3.1,return介绍
3.2,return演示
package main
import "fmt"
func main() {
for j := 0; j < 10; j++ {
fmt.Println("j =", j)
if j == 4 {
return
}
}
}