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

Go语言流程控制(if / for)

分支结构

package mainimport ("fmt""strconv"
)/*
1.顺序结构
2.分支结构
3.循环结构
*//*
if 条件1 {// 条件1为真时执行的代码
} else if 条件2 {// 条件1为假但条件2为真时执行的代码
} else {// 所有条件均为假时执行的代码
}一种特殊的条件分支结构if statement;条件{执行语句}
*/
func main() {if v, e := strconv.Atoi("abc"); e != nil {fmt.Println("转换失败", e)} else {fmt.Println("转换成功", v)}
}

switch 接收用户从键盘输入的成绩,输出相应的成绩等级

package mainimport ("fmt""strconv"
)/*
switch{
case    变量范围1:执行语句1case    变量范围2:执行语句2default:执行语句3}
*/
func main() {//接收用户从键盘输入的成绩,输出相应的成绩等级var score intfmt.Println("请输入成绩")fmt.Scan(&score)switch {case score < 60:fmt.Println("不及格")case score < 90:fmt.Println("良好")default:fmt.Println("优秀")}
}

switch 登录选择界面

package mainimport ("fmt"
)func main() {var choice intfmt.Println("please input your choice:")fmt.Scan(&choice)switch choice {case 1:fmt.Println("选择了登录")case 2:fmt.Println("选择了注册")default:fmt.Println("输入有误")}}

循环结构

for循环
package mainimport ("fmt"
)func main() {for i := 0; i < 10; i++ {fmt.Println(i)}//第二种方法 i := 0for i < 10 {fmt.Println(i)i++}
}

类似while循环

package mainimport ("fmt"
)func main() {var choice stringfor choice != "quit" {fmt.Println("请输入你的选择:")fmt.Scan(&choice)}
}

range

package mainimport ("fmt"
)func main() {for k, v := range "xyz" {fmt.Printf("key:%d,value:%c\n", k, v) //key是索引,value是字符-->key:0,value:xfmt.Println("key:", k, "value:", v)   //key是索引,value是字符-->key: 0 value: 120}
}

死循环

package mainimport ("fmt"
)func main() {for {//无限死循环   可以通过某些条件判断  用break跳出循环}
}

break 、continue

package mainimport ("fmt"
)func main() {//break --》跳出本次循环//continue --》跳过本次循环,继续下一次循环for k, v := range "xyz" {fmt.Println("外层循环:", k, string(v))for m, n := range "abc" {if string(n) == "b" {//continue //跳过本次循环,继续下一次循环//一般用于后续还有代码要执行,跳过本次循环break //跳出内层循环} else {fmt.Println("****内层循环:", m, string(n))}}}
}
题目:用户登录

接收用户名和密码输入,判断用户明是否为root,密码是否为123456

如果是,输出登录成功

输入错误,有三次重试机会,三次用完提示登录失败

package mainimport ("fmt"
)func main() {var username, password stringfor i := 0; i < 3; i++ {fmt.Println("请输入用户名:")fmt.Scan(&username)fmt.Println("请输入密码:")fmt.Scan(&password)if username == "root" && password == "123456" {fmt.Println("登录成功")break} else {fmt.Println("用户名或密码错误,请重新输入,还有", 2-i, "次机会")}}if username != "root" || password != "123456" {fmt.Println("登录失败")}
}

for循环有自己的空间

for循环内创建的变量只能在循环体内使用

for循环创建的变量和父作用域的同名变量互不干涉

package mainimport ("fmt"
)var a int
func main() {//for循环有自己的空间a := 100fmt.Printf("outside a is :%d,address is %x \n", a, &a)for _, v := range "xyz" {fmt.Println("拿到的值为:", string(v))a := 1000fmt.Printf("inside a is :%d,adress is %x \n", a, &a)}
}

goto语句

package mainimport ("fmt"
)var a int
func main() {//goto语句    慎用num1 := 1
ABC:fmt.Println(num1)for num1 < 10 {num1++if num1 == 5 {goto ABC}}
}
http://www.xdnf.cn/news/15853.html

相关文章:

  • 一小时学习Redis
  • websocket案例 599足球比分
  • 海森矩阵(Hessian Matrix)在SLAM图优化和点云配准中的应用介绍
  • 实战指南|智慧无人机安防系统搭建全流程解析
  • 深入理解Linux文件操作:stdin/stdout/stderr与C语言文件函数全解析
  • PDF 拆分合并PDFSam:开源免费 多文件合并 + 按页码拆分 本地处理
  • 突破性量子芯片问世:电子与光子首次集成,开启量子技术规模化应用新篇章
  • 暑期自学嵌入式——Day05补充(C语言阶段)
  • 二分答案之第 K 小/大
  • Visual Studio编译WPF项目生成的文件介绍
  • 服务器mysql数据的简单备份脚本
  • 二、Dify 版本升级教程(LInux-openeuler)
  • iOS OC 图片压缩
  • vue2 面试题及详细答案150道(101 - 120)
  • 国产替代:ASP4644在电信通信设备中的测试与应用前景
  • Java类:BigDecimal 的用法:乘法
  • IDEA 2020.1版本起下载JDK
  • Logback 配置的利器:深入理解<property>与<variable>
  • vue2 面试题及详细答案150道(21 - 40)
  • 闭包的定义和应用场景
  • Rust实战:高效对接Postman API
  • Spring中的SpEL是什么
  • Springboot3整合Elasticsearch8(elasticsearch-java)
  • [2025CVPR-目标检测方向]FSHNet:一种用于3D物体检测的全稀疏混合网络。
  • Hive数据仓库工具
  • 什么是高光谱相机,它与数码相机有什么区别?
  • 相机光学(五十)——Depth AF
  • RTKLIB读取星历文件,观测数据
  • 解决Flutter运行android提示Deprecated imperative apply of Flutter‘s Gradle plugins
  • 电解电容串联均衡电阻计算