5-Go分支与循环

一、if结构

  • if结构基本语法if 条件判断 {代码语句}
func main()  {
	fmt.Println("请输入你的年龄:")
	var age int
	fmt.Scan(&age)
	if age >= 18 {
		fmt.Println("恭喜你成年了")
	}
	fmt.Println("Hello Itcast")
}
  • 案例:成绩奖励
func main() {
	var chinese int
	var math int
	fmt.Println("请输入语文成绩:")
	fmt.Scan(&chinese)
	fmt.Println("请输入数学成绩:")
	fmt.Scan(&math)
	if chinese > 70 && math == 100{
		fmt.Println("奖励100元")
	}
}

二、if…else 结构

  • if…else 结构语法
 if 条件判断 {
		代码语句
    } else {
		代码语句
 }
func main() {
	var age int = 15
	if age >= 18 {
		fmt.Println("恭喜你已经成年了!!")
	} else { // else 书写位置不要写错
		fmt.Println("你没有成年!!")
	}

	//小王的考试成绩大于等于90分,那么爸爸奖励他100元钱,否则的话,爸爸就让小王跪方便面。
	// 1:定义一个变量存储小王的考试成绩。
	var score int
	// 2: 录入考试成绩
	fmt.Println("请输入考试成绩:")
	fmt.Scan(&score)
	// 3: 对考试成绩进行判断,然后打印出不同的结果。
	if score >= 90 {
		fmt.Println("奖励100元")
	} else {
		fmt.Println("跪方便面")
	}
}

三、if…else if 结构

  • if…else if 结构语法
if 条件判断 {
	要执行的代码段
} else if 条件判断 { 
	要执行的代码段
} else if 条件判断 {
	要执行的代码段
} else {
	要执行的代码段
}
func main()  {
   // 1: 接收考试成绩
   var score float64
   fmt.Println("请输入考试成绩:")
   fmt.Scan(&score)
   // 2: 对考试成绩进行判断
   if score >= 90 {
   		 fmt.Println("A")
   } else if score >= 80 {
   		fmt.Println("B")
   } else if score >= 70 {
   		fmt.Println("C")
   } else if score >= 60 {
   		fmt.Println("D")
   } else {
   		fmt.Println("E")
   }
   // 3: 打印相应的信息
}

四、switch结构

  • switch结构语法:某个case 后面跟着的代码执行完毕后,不会再执行后面的case,而是跳出整个switch结
    构, 相当于每个case后面都跟着break(终止),但是如果我们想执行完成某个case后,强制执行后面的case,可以使用fallthrough。
switch 变量或表达式{
	case1:
		要执行的代码
	case2:
		要执行的代码
	case3:
		要执行的代码
	default:
		要执行的代码
}
  • 案例:根据输入的数字判断是星期几
func main()  {
	// 输入数字,如果用户输入的是数字1,则输出星期一,如果输入的是2,则输出星期二....
	var data int
	fmt.Println("请输入数字")
	fmt.Scan(&data)
	switch data {
	case 1:
		fmt.Println("星期一")
	case 2:
		fmt.Println("星期二")
	case 3:
		fmt.Println("星期三")
	case 4:
		fmt.Println("星期四")
	case 5:
		fmt.Println("星期五")
	case 6:
		fmt.Println("星期六")
	case 7:
		fmt.Println("星期日")
	default:
		fmt.Println("输入的数字是错误")
	}
}
  • 案例:获取某年某月的天数
func main()  {
	// 请用户输年份,再输入月份,输出该月的天数.(需要考虑闰年)
	/*
		闰年的判定(符合下面两个条件之一)
		年份能够被400整除.(2000)
		年份能够被4整除但不能被100整除.(2008)
	*/
	// 1: 定义变量存储月份与年
	var year int
	var month int
	var day int
	fmt.Println("请输入年:")
	fmt.Scan(&year)
	fmt.Println("请输入月:")
	fmt.Scan(&month)
	// 2: 判断输入的月份是否正确.
	if month >= 1 && month <= 12 {
		// 3: 如果 1,3,5,7,8,10,12  输入的天数31天
		switch month {
		case 1:
			fallthrough
		case 3:
			fallthrough
		case 5:
			fallthrough
		case 7:
			fallthrough
		case 8:
			fallthrough
		case 10:
			fallthrough
		case 12:
			day = 31
			// 4: 2 判断闰年 29天,28天
		case 2 :
			if year % 400 == 0 || year % 4 == 0 && year % 100 != 0 {
				day = 29
			} else {
				day = 28
			}
		default:
			day = 30
		}
		fmt.Println("天数:", day)
	} else {
		fmt.Println("输入月份错误!!")
	}

	// 5: 其它月份输出的是30天
}

五、for循环

  • for循环语法
for 初始化变量; 判断条件;修正变量 {
	要执行的代码(循环体)
}

func main()  {
	var i int
	for i=1; i <= 10;i++ {
		fmt.Println("媳妇,我错误了!!")
	}
	fmt.Println(i)
}

六、break和死循环

  • break:结束当前循环
  • 死循环:所谓的死循环指的就是一直循环,无法终止
func main() {
	/*
		for i:=0; i<10; i++ {
			if i==3 {
				break // 结束当前循环,后面的代码不会在执行。
			}
			fmt.Println(i)
		}
	*/
	// 要求用户输入用户名和密码,只要不是admin、888888就一直提示用户名,密码错误,请重新输入。
	// 1: 定义变量存储用户名和密码
	var userName string // 存储用户名
	var userPwd string  // 存储密码
	var count int       // 记录的输入错误的次数
	for {
		fmt.Println("请输入用户名:")
		fmt.Scan(&userName)
		fmt.Println("请输入密码:")
		fmt.Scan(&userPwd)
		// 2: 对输入的用户名密码进行判断。
		if userName == "admin" && userPwd == "888888" {
			fmt.Println("输入的用户名密码正确")
			break
		} else {
			count++
			if count >= 3 {
				fmt.Println("最多输错3次")
				break
			}
			fmt.Println("输入的用户名密码错误,请重新输入")
		}
	}
	// 3: 如果不正确,给出重新输入的提示,如果正确,给出的正确的提示
}

七、continue

  • continue语句:结束本轮循环,然后进行循环条件判断,如果成立进行然后进入下一轮循环,否则退出循环
func main() {
	// 用continue实现:输出1-5个数字,除了数字3以外。
	/*
		for i := 1; i <= 5 ; i++  {
			if i == 3 {
				continue
			}
			fmt.Println(i)
		}
	*/

	// 用continue实现:计算1到100(含)之间的除了能被7整除之外所有整数的和。
	var sum int
	for i := 1; i <= 100; i++ {
		if i%7 == 0 {
			continue
		}
		sum += i
	}
	fmt.Println(sum)
}

八、循环案例

  • 案例:循环嵌套
func main() {
	/*
		for j := 1; j <= 3; j++ {
			for i := 1; i <= 3; i++ {
				fmt.Println("媳妇,我错了")
			}
		}
	*/
	// 矩形
	/*
		for j :=1;j <= 5;j++ {
			for i:= 1; i <= 5; i++ {
				fmt.Print("*")
			}
			fmt.Print("\n")
		}
	*/
	// 三角形
	for j := 1; j <= 5; j++ {
		for i := 1; i <= j; i++ {
			fmt.Print("*")
		}
		fmt.Print("\n")
	}
}
  • 案例:计算营业额
func main() {
	// 2006年营业额80000元,每年增长25%,请问按此增长速度,到哪一年营业额将达到20万元
	var year int = 2006
	var money float64
	for money = 80000; money <= 200000; money = money * 1.25 {
		year += 1
	}
	fmt.Println(year)
}
  • 案例:水仙花数
func main() {
	// 找出100-999间的水仙花数
	// 水仙花:是指一个三位数,它的每位数字的立方和等于其本身
	// 153 =1+125+27
	// 1: 构建循环条件
	var h int // 百位
	var t int // 十位
	var b int // 个位
	for i := 100; i <= 999; i++ {
		// ctrl+alt+l //快速排版的快捷键
		// 2: 进行计算
		h = i / 100
		t = i % 100 / 10
		b = i % 10
		if h*h*h+t*t*t+b*b*b == i {
			fmt.Println(i)
		}
	}
	// 3: 打印输出结果
}
  • 案例:乘法口诀表
func main() {
	// 1: 考虑一行展示
	for j := 1; j <= 9; j++ { //行
		for i := 1; i <= j; i++ {
			// 1*1=1
			fmt.Printf("%d*%d=%d\t", j, i, j*i) // \t --tab
		}
		fmt.Print("\n")
	}
	// 2; 考虑多行展示
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无休止符

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值