go中if、for

news/2024/11/13 21:19:49/文章来源:https://www.cnblogs.com/xuruizhao/p/18544827

流程控制

面向过程编程

  • 自上而下的执行()

面向对象编程:让程序像人一样的思考来运行,而不是机械式的自上而下 (架构)

  • 将世界抽象为一个个的对象,然后用程序来模拟这一个个的对象,然后进行一些人工化的操作实现

现实世界的逻辑

  • 定义 (属性)
  • 判断 (对错,导向不同的结果)
  • 循环 (很多事情本质上都是在循环的) 时间(秒、时、分、日、月、年、周)

程序代码底层的本质,也和上面相同,所有编程语言都有的

  • 定义 变量、常量
  • 需要在程序中进行一些判断,来做出一些不同的决定 if 如果....如果条件二else if.....否则else.....
    • 考分,90 + A 80 - 90 B 70-80 C 0-60 D ....
  • 循环,我们希望程序不停的做一件事情 for 循环
    • 服务器,我们希望程序是一直执行
    • 大量计算,1 + .... + 100000000

顺序结构:自上而下运行

选择结构:满足了某些条件才会执行

  • if (常用的)
  • switch (也要学会使用,某些情况下可以优化代码结构)

循环结构:条件满足的情况,我们会去循环0 - N次。

  • for

1、if

if  a>10 {fmt.Println("大于10")
} else {fmt.Println("不大于10")
}
// if -- else
package mainimport "fmt"func main() {var score int = 90if score >= 60 {fmt.Println("及格")} else {fmt.Println("不及格")}
}package mainimport "fmt"func main() {// 判断用户密码输入是否正确// 接收用户输入// 第一次判断// 第二次输出// 第二次判断var num1 stringvar num2 stringfmt.Println("请输入密码:")// Scan()  指针对象fmt.Scan(&num1)if num1 == "123" {fmt.Printf("第一次密码正确")fmt.Println("请再次输入密码:")fmt.Scan(&num2)if num2 == "123" {fmt.Printf("第二次密码正确,登录成功")} else {fmt.Println("第二从密码错误")}} else {fmt.Println("第一次密码错误")}
}
// if -- else if -- else
package mainimport "fmt"func main() {var score int = 60if score >= 60 {if score >= 90 && score <= 100 {fmt.Println("A")} else if score >= 80 && score < 90 {fmt.Println("B")} else if score >= 70 && score < 80 {fmt.Println("C")} else {fmt.Println("D")}} else {fmt.Println("不及格")}
}

2、switch

package mainimport "fmt"func main() {var score int = 100// 通过switch来判断score// case , 后面可以写多个条件switch score {case 100, 95, 91:fmt.Println("A")case 90:fmt.Println("B")case 80, 70, 60:fmt.Println("C")default:fmt.Println("other")}// switch 是可以省略条件的,默认是 switch trueswitch{case false:fmt.Println("false")case true:fmt.Println("true")default:fmt.Println("其他")}//var flag bool//switch flag {//case score<100 :////}
}

switch 穿透

package mainimport "fmt"func main() {a := falseswitch a {// 在case中 一旦使用了 fallthrough,则会强制执行下一个case语句case false:fmt.Println("1")fallthroughcase true:fmt.Println("2")fallthroughcase true:fmt.Println("3")fallthroughcase false:fmt.Println("4")fallthroughcase false:}
}

分支结构小结

  • if

  • if ... else if

  • if .... else

  • if ... else if ... else if ... else if... else

  • swtich - case

  • swtich - case - fallthrough

  • swtich - case - default

3、for

package mainimport "fmt"func main() {//for 参数1:从哪里开始  参数2:到哪里结束 参数3:控制这个循环条件变量(自增和自减)for i := 0; i < 10; i++ {fmt.Println(i)}
}
package mainimport "fmt"
// 求1-10的和
func main() {var sum int = 0for i := 0; i <= 10; i++ {sum += i}fmt.Println(sum)
}

(1)、探究for循环

package mainimport "fmt"// 探究for循环   init:起始值  end:结束值  condition:条件变量
func main() {i := 0// for 循环可以直接// 在for循环中定义的变量,作用域就只在 for循环内,外面是无法调用的// for + 结束for条件就可以跑起来for i <= 5 {i++}fmt.Println(i)
}
package mainimport ("fmt"
)// 探究for循环   init:起始值  end:结束值  condition:条件变量
func main() {// 没有起始值、没有结束...  无限循环,死循环, 不要在开发中写这种代码。会内存溢出for {fmt.Println("hello,world")}
}

(4)、终止循环

break : 结束整个循环,立即停止

continue :结束当前这次循环,继续进行下一次循环

package mainimport "fmt"func main() {for i := 1; i <= 10; i++ {if i == 5 {//breakcontinue // 到这里就结束了当次循环,不会向下了,继续从头开始}fmt.Println(i)}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/833148.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XXL JOB DockerCompose部署

官网给的方式是 Docker 命令启动,但是用起来太麻烦了,所以用DockerCompose 简化部署 创建数据库,导入 SQL SQL 脚本位置为/xxl-job/doc/db/tables_xxl_job.sql https://raw.githubusercontent.com/xuxueli/xxl-job/refs/heads/master/doc/db/tables_xxl_job.sql 编写 Docker…

CICD02 Jenkins安装,备份还原, 实现CICD核心功能 ubuntu使用

DevOps 之 CICD 服务器 Jenkins 1 Jenkins 部署与基本配置 1.2 Jenkins 安装和启动 1.2.1 Jenkins 的安装 Jenkins支持多种安装方法 1.包安装 2.JAVA的WAR文件 #要手动配置,不太方便 3.容器运行#系统要求 最低推荐配置:1.256MB可用内存2.1GB可用磁盘空间(作为一个Docker容…

CICD01 Git, GitLab, 部署方式 ubuntu使用

版本管理系统 Git 和 GitLab 1 DevOps 简介 1.3 持续集成、持续交付和持续部署 CICD CICD: 持续集成, 持续交付, 持续部署 1.6 常见的软件部署模式 生产中 蓝绿部署 和 金丝雀用的比较多 1.6.1 蓝绿部署 Blue-green Deployments 一个和生产环境一样的预发布环境, 和生产环…

jvm 垃圾回收算法的评价标准

如何实现回收的(核心思想): 1. 找到内存中存活的对象(与GC Root相关联) 2. 释放不再存活对象的内存,使得程序能再次利用这部分空间 --------------------------------------------------------------------------------- 垃圾回收算法的分类: -------- ----------------…

GO面试-切片

一、结构介绍 切片(Slice)在 Go 语言中,有一个很常用的数据结构,切片是一个拥有相同类型元素的可变长度的序列,它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。并发不安全。 切片是一种引用类型,它有三个属性:指针,长度和容量。 底层源码定义: type slice …

系统管理体系——软件包管理

1.Linux系统管理体系——软件包管理Linux下面的软件包格式为:rpm格式(红帽系列系统,CentOS,麒麟系统)或deb格式(Debian,Ubuntu)安装软件方式 举例 说明 应用场景yum/apt 方式 点外卖,缺啥少啥,外卖解 决 通过网络下载软件包,替我们安装, 如果 有依赖自动下载依赖并安装. …

Linux12位权限管理体

1. Linux12位权限管理体 1.1 权限管理概述Linux通过rwx3种权限控制系统与保护系统,组成9位权限. Linux权限体系中还有3位特殊权限,组合起来就是12位权限体系. Linux这简单的rwx控制整个Linux系统的安全,权限与用户共同组成Linux系统的安全防护体系.1.2 Linux权限计算 2.0 rwx权…

Java流程控制(三)

用户交互Scanner(java.util.Scanner获取用户的输入)//基本语法 Scanner s = new Scanner(System.in)通过Scanner类的next()与nextLine()方法获取输入的字符串,使用hasNext()与hasNextLine()判断是否还有输入的数据(Next不能得到带有空格的字符串,NextLine可以获得空白)im…

0.1+0.2=0.30000000000000004

看下效果这个网站能找到你想要的答案 https://0.30000000000000004.com/ 十进制转二进制 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。 具体做法是:用2整除十进制整数,可以得到一个商和余数; 再用2去除商,又会得到一个商和余数,如此进行,直到商为小…

「AT_diverta2019_2_e」Balanced Piles 题解

题意描述 有一个长度为 \(N(2\le N \le 10^6)\) 的数组,一开始所有元素均为 \(0\)。 设 \(M\) 为当前数组中的最大元素,\(m\) 是当前数组中的最小元素,你可以执行若干次以下操作:选择一个大小为 \(m\) 的元素,把他变为 \(x\),其中 \(M\le x \le M+D\) 且 \(m<x\)。 求…

团队项目Scrum冲刺-day3

一、每天举行站立式会议 站立式会议照片一张昨天已完成的工作成员 任务陈国金 用户模块的部分接口凌枫 用户登录页面陈卓恒 用户注册界面谭立业 题目搜索页面部分内容廖俊龙 接口测试曾平凡 前端页面测试曾俊涛 题目模块的部分接口薛秋昊 题目提交模块的部分接口今天计划完成的…

Logisim-016-海明解码

仓库地址 https://gitee.com/gitliang/logisim-to-cpu