Go基础(3)-流程控制和goto以及return

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 循环控制介绍在这里插入图片描述

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
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值