当前位置: 首页 > news >正文

第三章:流程控制

第三章:流程控制

3.1 条件语句

if语句

packagemainimport"fmt"funcmain(){score:=85// 基本if语句ifscore>=60{fmt.Println("及格")}// if-else语句ifscore>=90{fmt.Println("优秀")}else{fmt.Println("还需努力")}// if-else if-else语句ifscore>=90{fmt.Println("优秀")}elseifscore>=80{fmt.Println("良好")}elseifscore>=70{fmt.Println("中等")}elseifscore>=60{fmt.Println("及格")}else{fmt.Println("不及格")}// if语句带初始化语句ifnum:=10;num%2==0{fmt.Printf("%d是偶数\n",num)}else{fmt.Printf("%d是奇数\n",num)}}

switch语句

packagemainimport("fmt""time")funcmain(){// 基本switchday:=time.Now().Weekday()switchday{casetime.Monday:fmt.Println("星期一")casetime.Tuesday:fmt.Println("星期二")casetime.Wednesday:fmt.Println("星期三")casetime.Thursday:fmt.Println("星期四")casetime.Friday:fmt.Println("星期五")casetime.Saturday,time.Sunday:fmt.Println("周末")default:fmt.Println("未知")}// 多条件匹配month:=time.Now().Month()switchmonth{casetime.March,time.April,time.May:fmt.Println("春天")casetime.June,time.July,time.August:fmt.Println("夏天")casetime.September,time.October,time.November:fmt.Println("秋天")casetime.December,time.January,time.February:fmt.Println("冬天")}// 无条件switchscore:=85switch{casescore>=90:fmt.Println("优秀")casescore>=80:fmt.Println("良好")casescore>=70:fmt.Println("中等")casescore>=60:fmt.Println("及格")default:fmt.Println("不及格")}// 类型switchvarxinterface{}="hello"switchv:=x.(type){caseint:fmt.Printf("x是int: %d\n",v)casestring:fmt.Printf("x是string: %s\n",v)casebool:fmt.Printf("x是bool: %v\n",v)default:fmt.Printf("x是未知类型: %T\n",v)}// fallthrough关键字num:=1switchnum{case1:fmt.Println("一")fallthroughcase2:fmt.Println("二")fallthroughcase3:fmt.Println("三")}// 输出: 一 二 三}

3.2 循环语句

for循环

packagemainimport"fmt"funcmain(){// 基本for循环fmt.Println("基本for循环:")fori:=1;i<=5;i++{fmt.Printf("%d ",i)}fmt.Println()// while风格循环fmt.Println("while风格循环:")count:=1forcount<=5{fmt.Printf("%d ",count)count++}fmt.Println()// 无限循环fmt.Println("无限循环 (使用break退出):")sum:=0for{sum+=1ifsum>5{break}fmt.Printf("%d ",sum)}fmt.Println()// range遍历数组fmt.Println("range遍历数组:")arr:=[]int{10,20,30,40,50}forindex,value:=rangearr{fmt.Printf("索引: %d, 值: %d\n",index,value)}// range遍历字符串fmt.Println("range遍历字符串:")str:="Hello, 世界"fori,ch:=rangestr{fmt.Printf("索引: %d, 字符: %c\n",i,ch)}// range遍历mapfmt.Println("range遍历map:")scores:=map[string]int{"张三":90,"李四":85,"王五":95,}forname,score:=rangescores{fmt.Printf("姓名: %s, 分数: %d\n",name,score)}// range遍历channelfmt.Println("range遍历channel:")ch:=make(chanint,3)ch<-1ch<-2ch<-3close(ch)forv:=rangech{fmt.Printf("%d ",v)}fmt.Println()}

break和continue

packagemainimport"fmt"funcmain(){// break示例fmt.Println("break示例:")fori:=1;i<=10;i++{ifi>5{break}fmt.Printf("%d ",i)}fmt.Println()// continue示例fmt.Println("continue示例 (跳过偶数):")fori:=1;i<=10;i++{ifi%2==0{continue}fmt.Printf("%d ",i)}fmt.Println()// 带标签的breakfmt.Println("带标签的break:")outer:fori:=1;i<=3;i++{forj:=1;j<=3;j++{ifi==2&&j==2{breakouter}fmt.Printf("(%d,%d) ",i,j)}}fmt.Println()// 带标签的continuefmt.Println("带标签的continue:")outer2:fori:=1;i<=3;i++{forj:=1;j<=3;j++{ifj==2{continueouter2}fmt.Printf("(%d,%d) ",i,j)}}fmt.Println()}

3.3 goto语句

packagemainimport"fmt"funcmain(){i:=0loop:ifi<5{fmt.Printf("%d ",i)i++gotoloop}fmt.Println()}

3.4 defer语句

packagemainimport"fmt"funcmain(){// defer基本用法fmt.Println("开始")deferfmt.Println("defer 1")deferfmt.Println("defer 2")deferfmt.Println("defer 3")fmt.Println("结束")// 输出顺序: 开始 结束 defer 3 defer 2 defer 1// defer用于资源清理fmt.Println("\n文件操作示例:")fmt.Println("打开文件")deferfmt.Println("关闭文件")fmt.Println("读取文件")fmt.Println("处理数据")// defer与匿名函数fmt.Println("\ndefer与匿名函数:")x:=10deferfunc(){fmt.Printf("defer中的x: %d\n",x)}()x=20fmt.Printf("修改后的x: %d\n",x)// defer执行顺序fmt.Println("\ndefer执行顺序:")fori:=0;i<5;i++{deferfmt.Printf("%d ",i)}fmt.Println()}

3.5 实战案例:成绩统计系统

packagemainimport("fmt""sort")// Student 学生结构体typeStudentstruct{NamestringScoreint}funcmain(){// 学生成绩数据students:=[]Student{{"张三",90},{"李四",85},{"王五",95},{"赵六",78},{"钱七",92},{"孙八",88},{"周九",76},{"吴十",98},}// 统计信息vartotalScoreintmaxScore:=students[0].Score minScore:=students[0].Score maxStudent:=students[0].Name minStudent:=students[0].Name// 成绩等级统计gradeCount:=map[string]int{"优秀":0,"良好":0,"中等":0,"及格":0,"不及格":0,}// 遍历统计for_,student:=rangestudents{totalScore+=student.Score// 更新最高分和最低分ifstudent.Score>maxScore{maxScore=student.Score maxStudent=student.Name}ifstudent.Score<minScore{minScore=student.Score minStudent=student.Name}// 统计等级switch{casestudent.Score>=90:gradeCount["优秀"]++casestudent.Score>=80:gradeCount["良好"]++casestudent.Score>=70:gradeCount["中等"]++casestudent.Score>=60:gradeCount["及格"]++default:gradeCount["不及格"]++}}// 计算平均分avgScore:=float64(totalScore)/float64(len(students))// 按成绩排序sortedStudents:=make([]Student,len(students))copy(sortedStudents,students)sort.Slice(sortedStudents,func(i,jint)bool{returnsortedStudents[i].Score>sortedStudents[j].Score})// 输出结果fmt.Println("="+strings.Repeat("=",50))fmt.Println("学生成绩统计系统")fmt.Println("="+strings.Repeat("=",50))fmt.Printf("\n学生总数: %d\n",len(students))fmt.Printf("总分: %d\n",totalScore)fmt.Printf("平均分: %.2f\n",avgScore)fmt.Printf("最高分: %d (%s)\n",maxScore,maxStudent)fmt.Printf("最低分: %d (%s)\n",minScore,minStudent)fmt.Println("\n成绩等级分布:")forgrade,count:=rangegradeCount{ifcount>0{percentage:=float64(count)/float64(len(students))*100fmt.Printf(" %s: %d人 (%.1f%%)\n",grade,count,percentage)}}fmt.Println("\n成绩排名:")fori,student:=rangesortedStudents{fmt.Printf(" 第%d名: %s - %d分\n",i+1,student.Name,student.Score)}fmt.Println("="+strings.Repeat("=",50))}
http://www.jsqmd.com/news/1206065/

相关文章:

  • 苏州新办企业税务登记怎么做?理清税种核定关键事项
  • NCP协议解析:从ARPANET到TCP/IP的演进历程
  • 2026 年 7 月营口贵金属回收完整实测指南|足金 / 18K / 铂金 / 白银 / 钻石全品类回收、6 家正规门店地址电话、全套避坑 - 不晚生活号
  • 5分钟掌握Unity卡通渲染的终极解决方案:UniToon物理卡通着色器深度解析
  • Ascend C FP8数据转换函数
  • CVAT完全指南:从零开始的计算机视觉标注工具终极教程
  • 3步掌握微信聊天记录管理:从数据备份到AI记忆的完整指南
  • 3大核心能力:kohya_ss如何让AI绘画模型训练变得触手可及
  • 重庆爱彼回收价格查询和各大回收平台实测排行(2026年7月最新数据) - 尊奢回收二奢平台
  • FPGA仿真实践:ModelSim与Lattice MXO2开发指南
  • 计算机存储器分类与性能指标详解
  • Open WebUI实战指南:构建企业级本地AI平台的深度解析
  • 2026出口企业选胶:出口资质齐全的无三苯胶水生产厂家推荐 - 全域品牌推荐
  • WeChatMsg:让珍贵对话永不消失的专业级本地化保存工具
  • 八十六中学245㎡功能室改造竣工,理化实验室耐酸碱地坪与防漏电系统全解析 - 热点速览
  • Agent-S:重新定义人机交互的技术哲学与工程实践
  • 苏州园区地址挂靠合法吗?初创小微企业提前自查风险
  • C语言函数指针详解:从基础到高级应用
  • 2026南昌防水防漏实操指南:免砸砖堵漏与防渗重点清单 - 观金堂
  • scGPT完整指南:快速掌握单细胞多组学AI分析工具
  • 多模态AI模型:核心技术解析与工程实践指南
  • 全志V853 NPU开发环境搭建与AI模型部署指南
  • 百达翡丽中国官方售后服务体系全攻略|官方网站权威公告(2026年7月最新) - 百达翡丽中国服务中心
  • 三合一冲锋衣选购指南:轻量化设计与户外场景实战解析
  • OpenAI Codex账户配额重置福利详解与API使用优化指南
  • 株洲全城黄金回收,清奢黄金回收,价高、秤准、服务好! - 清奢黄金上门回收
  • CCM图腾柱PFC电路原理与高效设计解析
  • HoRain云--Eclipse 创建 Java 项目
  • ELF 1开发板NCNN移植与嵌入式AI优化实战
  • 2026 厦门奢品回收避坑,选择有资质商家易奢福更安心 - 奢侈品回收实体店