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

6、流程控制

目录

  • 一、if
  • 二、switch
  • 三、for
  • 四、break与continue
  • 五、goto与Label

一、if

  • if使用:逻辑表达式成立,就会执行{}里的内容;逻辑表达式不需要加()
if 5 > 9 {fmt.Println("5>9")
}
  • if句子中允许包含1个(仅1个)分号:在分号前初始化一些局部变量(即只在if块内可见)
func main() {m := make(map[int]string, 10)m[0] = "abc"if value, ok := m[1]; ok {fmt.Printf("[%s]", value)} else {fmt.Printf("[%s]", m[0])}}

二、switch

  • switch:switch和case后面可以跟常量、变量或函数表达式,只要它们表示的数据类型相同就行
func main() {color := "black"switch color {case "green": //相当于  if color== "green"fmt.Println("go")case "red": //相当于else if color== "red"fmt.Println("stop")default: //相当于elsefmt.Printf("invalid traffic signal: %s\n", strings.ToUpper(color)) //invalid traffic signal: BLACK}
}
  • switch+表达式
    • switch后带表达式时,switch-case只能模拟相等的情况;
    • 如果switch后不带表达式,case后就可以跟任意的条件表达式
func add(a int) int {return a + 10
}func main() {switch {case add(5) > 10:fmt.Println("right")default:fmt.Println("wrong")}
}
  • switch Type
func switch_type() {var num interface{} = 6.5//等价形式switch num.(type) {case int:value := num.(int)fmt.Printf("number is int %d\n", value)case float64:value := num.(float64)fmt.Printf("number is float64 %f\n", value)case byte:value := num.(byte)fmt.Printf("number is byte %d\n", value)default:fmt.Println("neither")}
}
  • switch效率:从上往下,只要找到成立的case,就不再执行后面的case了;所以为提高性能,把大概率会满足的情况往前放
  • fallthrough
    • case里如果带了fallthrough,则执行完本case还会去判断下一个case是否满足
    • 在switch type语句的 case 子句中不能使用fallthrough
func no_fall(age int) {switch {case age > 50:fmt.Println("退休")case age > 25:fmt.Println("生子")case age > 22:fmt.Println("结婚")}
}func fall(age int) {switch {case age > 50:fmt.Println("退休")fallthroughcase age > 25:fmt.Println("生子")fallthroughcase age > 22:fmt.Println("结婚")}
}func main() {no_fall(60) //退休fmt.Println("-----------------------")fall(60)//退休//生子//结婚
}

三、for

  • for遍历
func main() {arr := []int{1, 2, 3, 4, 5}for i := 0; i < len(arr); i++ { //正序遍历切片fmt.Printf("%d: %d\n", i, arr[i])}
}
  • for range遍历for range拿到的是数据的拷贝
    • 遍历数组或切片:for i, ele := range arr
    • 遍历string:for i, ele := range "我会唱ABC" //ele是rune类型
    • 遍历map,go不保证遍历的顺序:for key, value := range m
    • 遍历channel,遍历前一定要先close:for ele := range ch
func main() {str := "我会唱ABC"                         //1个汉字占3个bytefmt.Printf("len(str) = %d\n", len(str)) // len(str) = 12for i, ele := range str {fmt.Printf("%d %c\n", i, ele)}// 0 我// 3 会// 6 唱// 9 A// 10 B// 11 Cfmt.Println("--------------------")brr := []byte(str)fmt.Printf("len(brr) = %d\n", len(brr)) //len(brr) = 12for i, ele := range brr {fmt.Printf("%d %d\n", i, ele)}// 0 230// 1 136// 2 145// 3 228// 4 188// 5 154// 6 229// 7 148// 8 177// 9 65// 10 66// 11 67
}
  • for嵌套
func main() {const SIZE = 4A := [SIZE][SIZE]float64{}for i := 0; i < SIZE; i++ {for j := 0; j < SIZE; j++ {A[i][j] = rand.Float64() //[0,1)中的随机数}}fmt.Println(A)
}

四、break与continue

  • break与continue区别
    • break与continue用于控制for循环的代码流程,并且只针对最靠近自己的外层for循环
    • break和continue都是针对for循环的,不针对if或switch
    • break:退出for循环,且本轮break下面的代码不再执行
    • continue:本轮continue下面的代码不再执行,进入for循环的下一轮
func break_for() {arr := []int{1, 2, 3, 4, 5}for i, ele := range arr {fmt.Println("before break", i, ele)if i > 2 {break}fmt.Println(i, ele)}}func continue_for() {arr := []int{1, 2, 3, 4, 5}for i, ele := range arr {fmt.Println("before continue", i, ele)if i > 2 {continue}fmt.Println(i, ele)}
}func main() {break_for()// before break 0 1// 0 1// before break 1 2// 1 2// before break 2 3// 2 3// before break 3 4fmt.Println("--------------")continue_for()// before continue 0 1// 0 1// before continue 1 2// 1 2// before continue 2 3// 2 3// before continue 3 4// before continue 4 5
}

五、goto与Label

  • goto、Label
func main() {var i int = 4
MY_LABEL:i += 3fmt.Println(i)goto MY_LABEL //返回定义MY_LABEL的那一行,把代码再执行一遍(会进入一个无限循环)
}

相关文章:

6、流程控制

目录一、if二、switch三、for四、break与continue五、goto与Label一、if if使用&#xff1a;逻辑表达式成立&#xff0c;就会执行{}里的内容&#xff1b;逻辑表达式不需要加() if 5 > 9 {fmt.Println("5>9") }if句子中允许包含1个(仅1个)分号&#xff1a;在分…...

Linux中最基本常见命令总结

❤❤&#x1f49b;&#x1f49b;&#x1f49a;&#x1f49a;&#x1f499;&#x1f499;&#x1f49c;&#x1f49c;您的认可是对我最大的帮助&#x1f49c;&#x1f49c;&#x1f499;&#x1f499;&#x1f49a;&#x1f49a;&#x1f49b;&#x1f49b;❤❤ &#x1f90e;&…...

Python学习-----模块2.0(常用模块之时间模块-->time)

目录 前言&#xff1a; time简介 导入模块 1.时间戳 2.时间元组 &#xff08;1&#xff09;把时间戳转换为元组形式 &#xff08;2&#xff09;元组转换为时间戳输出 &#xff08;3&#xff09;把元组转换为格式化时间 &#xff08;4&#xff09;把时间戳转换为格式化时间…...

XXL-JOB分布式任务调度框架(二)-策略详解

文章目录1.引言2.任务详解2.1.执行器2.2.基础配置3.路由策略(第一个)-案例4.路由策略(最后一个)-案例5.轮询策略-案例6.随机选取7.轮询选取8.一致性hash9.最不经常使用 (LFU)10.最近最久未使用&#xff08;LRU&#xff09;11.故障转移12.忙碌转移13.分片广播任务14.父子任务15.…...

JAVA练习54-最小栈

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、题目-最小栈 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 2月18日练习内容…...

Redis-哨兵模式以及集群

在开始这部分内容之前需要先说一下复制功能&#xff0c;因为这是Redis实现主从数据同步的实现方式。复制功能如果存在两台服务器的话&#xff0c;我们可以使用redis的复制功能&#xff0c;让一台服务器去同步另一台服务器的数据。现在我启动了两台redis服务器&#xff0c;一个端…...

过滤器和监听器

1、过滤器Filter 作用是防止SQL注入、参数过滤、防止页面攻击、空参数矫正、Token校验、Session验证、点击率统计等等&#xff1b; 使用Filter的步骤 新建类&#xff0c;实现Filter抽象类&#xff1b;重写init、doFilter、destroy方法&#xff1b;在SpringBoot入口中添加注解…...

Acwing 第 91 场周赛

Powered by:NEFU AB-IN B站直播录像&#xff01; Link 文章目录Acwing 第 91 场周赛A AcWing 4861. 构造数列题意思路代码B AcWing 4862. 浇花题意思路代码C AcWing 4863. 构造新矩阵题意思路代码Acwing 第 91 场周赛 A AcWing 4861. 构造数列 题意 略 思路 将每个数的每一位…...

JavaEE|套接字编程之UDP数据报

文章目录一、DatagramSocket API构造方法常用方法二、DatagramPacket API构造方法常用方法E1:回显服务器的实现E2:带有业务逻辑的请求发送一、DatagramSocket API 在操作系统中&#xff0c;把socket对象当成了一个文件处理。等价于是文件描述符表上的一项。 普通的文件&#xf…...

如何使用Python创建一个自定义视频播放器

目录 1、安装vlc的64位版本。 2、安装python的vlc模块。 3、编写如下代码&#xff0c;包含了播放&#xff0c;暂停&#xff0c;停止、音量控制功能。 4、来看一看运行结果。 5、如果遇到播放不了的问题&#xff0c;解决方式如下&#xff1a; 这个例子使用VLC作为视频播放器…...

Elasticsearch进行优化-使用索引拆分(Split)和索引收缩(shrink )

一、索引拆分和收缩的场景 在Elasticsearch集群部署的初期我们可能评估不到位&#xff0c;导致分配的主分片数量太少&#xff0c;单分片的数据量太大&#xff0c;导致搜索时性能下降&#xff0c;这时我们可以使用Elasticsearch提供的Split功能对当前的分片进行拆分&#xff0c…...

数论 —— 高斯记号(Gauss mark)

定义 数学上&#xff0c;高斯记号&#xff08;Gauss mark&#xff09;是指对取整符号和取小符号的统称&#xff0c;用于数论等领域。 设 x∈Rx \in \textbf{R}x∈R&#xff0c;用 [x][x][x] 表示不超过 xxx 的最大整数。也可记作 [x][x][x]。设 x∈Rx \in \textbf{R}x∈R&…...

【随笔】程序员眼中的 CPU,“没有灵魂的躯体”

引言 先引用一段比较有意思的论述&#xff1a; 现实中每个人是由两部分构成&#xff0c;灵魂和躯体&#xff0c;灵魂依附于躯体游走于世间&#xff0c;现实中我们面对的每个人其实面对的是其灵魂而非肉体&#xff0c;肉体不过是表象而已。 灵魂本性乃一恶物&#xff0c;寄生于…...

算法的时间复杂度

算法在编写成可执行程序后&#xff0c;运行时需要消耗时间资源和空间&#xff08;内存&#xff09;资源&#xff0c;因此衡量一个算法的好坏&#xff0c;一般是从时间和空间两个维度来衡量的。 时间复杂度主要衡量一个算法运行的快慢&#xff0c;而空间复杂度主要衡量一个算法运…...

华为OD机试 - 叠放书籍(Python) | 机试题算法思路 【2023】

最近更新的博客 华为OD机试 - 寻找路径 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试 - 五键键盘 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试 - IPv4 地址转换成整数 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试 - 对称美学 | 备考思路,刷题要点,答疑 …...

进程间通信(重点)

概念 进程是一个独立的资源分配单元&#xff0c;不同进程之间的资源是独立的进程并非孤立的&#xff0c;不同进程需要进行信息的交互和状态的传递&#xff0c;因此需要进程之间的通信【IPC: Inter processes communication】 如qq聊天&#xff0c;qq在每个人的手机上是独立的…...

Reverse入门[不断记录]

文章目录前言一、[SWPUCTF 2021 新生赛]re1二、[SWPUCTF 2021 新生赛]re2三、[GFCTF 2021]wordy[花指令]四、[NSSRound#3 Team]jump_by_jump[花指令]五、[NSSRound#3 Team]jump_by_jump_revenge[花指令]前言 心血来潮&#xff0c;想接触点Reverse&#xff0c;感受下Reverse&am…...

如何实现外网访问内网ip?公网端口映射或内网映射来解决

本地搭建服务器应用&#xff0c;在局域网内可以访问&#xff0c;但在外网不能访问。如何实现外网访问内网ip&#xff1f;主要有两种方案&#xff1a;路由器端口映射和快解析内网映射。根据自己本地网络环境&#xff0c;结合是否有公网IP&#xff0c;是否有路由权限&#xff0c;…...

[acwing周赛复盘] 第 91 场周赛20230218

[acwing周赛复盘] 第 91 场周赛20230218 一、本周周赛总结二、 4861. 构造数列1. 题目描述2. 思路分析3. 代码实现三、4862. 浇花1. 题目描述2. 思路分析3. 代码实现四、4863. 构造新矩阵1. 题目描述2. 思路分析3. 代码实现六、参考链接一、本周周赛总结 这周挺难的。T1 贪心分…...

蓝桥12届

小蓝准备用 256MB 的内存空间开一个数组&#xff0c;数组的每个元素都是 32 位 二进制整数&#xff0c;如果不考虑程序占用的空间和维护内存需要的辅助空间&#xff0c;请问 256MB 的空间可以存储多少个 32 位二进制整数&#xff1f;1MB 1024KB 1KB 1024字节(byte) 1字节 8位…...

华为OD机试 - 斗地主(JS)

斗地主 题目 斗地主起源于湖北十堰房县, 据传是一位叫吴修全的年轻人根据当地流行的扑克玩法“跑得快”改编的, 如今已风靡整个中国,并流行于互联网上 牌型: 单顺,又称顺子,最少5张牌,最多12张牌(3...A),不能有2, 也不能有大小王,不计花色 例如:3-4-5-7-8,7-8-9-1…...

【MyBatis】| MyBatis的注解式开发

目录 一&#xff1a;MyBatis的注解式开发 1. Insert注解 2. Delete注解 3. Update注解 4. Select注解 5. Results注解 一&#xff1a;MyBatis的注解式开发 MyBatis中也提供了注解式开发⽅式&#xff0c;采⽤注解可以减少Sql映射⽂件的配置。 当然&#xff0c;使⽤注…...

python自制PDF转换.PNG格式图片(按每页生成图片完整源码)小工具!

使用PyQt5应用程序制作PDF转换成图片的小工具&#xff0c;可以导入PDF文档后一键生成对应的PNG图片。 PDF图片转换小工具使用的中间件&#xff1a; python版本&#xff1a;3.6.8 UI应用版本&#xff1a;PyQt5 PDF文件操作非标准库&#xff1a;PyPDF2 PNG图片生成库&#xff1…...

Go 数组和切片反思

切片的底层数据结构是数组&#xff0c;所以&#xff0c;切片是基于数组的上层封装&#xff0c;使用数组的场景&#xff0c;也完全可以使用切片。 类型比较 我看到 go 1.17 有对切片和数组转换的优化&#xff0c;禁不住纳闷&#xff0c;有什么场景是必须数组来完成的呢&#x…...

win10电脑性能优化设置

win10电脑性能优化设置 目录win10电脑性能优化设置1.桌面图标显示2.wini2.1 “系统”2.1.1专注助手 关2.1.2 电源和睡眠 设置为从不2.1.3 存储 开2.2 网络和Internet2.3 个性化2.4 应用2.5 账户2.6 游戏2.7 隐私墨迹书写和键入个性化&#xff1a;关活动历史记录&#xff1a;全部…...

作为初学者必须要了解的几种常用数据库!

现在已经存在了很多优秀的商业数据库&#xff0c;如甲骨文&#xff08;Oracle&#xff09;公司的 Oracle 数据库、IBM 公司的 DB2 数据库、微软公司的 SQL Server 数据库和 Access 数据库。同时&#xff0c;还有很多优秀的开源数据库&#xff0c;如 MySQL 数据库&#xff0c;Po…...

小红书日常实习一面面经

时间:2月13下午 平台&#xff1a;赛码网&#xff0c;视频面大概70分钟顺序大致是下面&#xff0c;讲到哪问到哪&#xff0c;基础知识最好要结合项目或者实际回答&#xff0c;没录音不完全&#xff0c;有错误请指正首先面试官人超级好&#xff0c;细心提问&#xff0c;耐心解答问…...

将Nginx 核心知识点扒了个底朝天(一)

什么是Nginx&#xff1f; Nginx是一个 轻量级/高性能的反向代理Web服务器&#xff0c;用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。他实现非常高效的反向代理、负载平衡&#xff0c;他可以处理2-3万并发连接数&#xff0c;官方监测能支持5万并发&#xff0c;现在中国使用ngin…...

SSM项目搭建保姆级教程

文章目录1、什么是SSM框架1.1、持久层1.2、业务层1.3、表现层1.4、View层1.5、SpringMVC执行流程1.6、MyBatis2、SSM实战搭建2.1、创建工程2.2、添加依赖2.3、配置spring.xml文件2.4、配置web.xml文件2.5、log4j.properties2.6、准备表2.7、实体类2.8、mapper2.9、service2.10、…...

LeetCode 350. 两个数组的交集 II

原题链接 难度&#xff1a;easy\color{Green}{easy}easy 题目描述 给你两个整数数组 nums1nums1nums1 和 nums2nums2nums2 &#xff0c;请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数&#xff0c;应与元素在两个数组中都出现的次数一致&#xff08;如果出现…...

药品网站建设/百度推广新手入门

&#xff08;1&#xff09;黄金分割法&#xff08;0.618法&#xff09; 基本思想&#xff1a; 它通过对试探点的函数值进行比较&#xff0c;使得包含极小点的区间不断缩短&#xff0c;当区间长度小到精度范围之内时&#xff0c;可以粗略地认为区间上各点的函数值均接近于…...

wordpress图片清理/成都网络推广外包公司哪家好

在前阵子项目改造中&#xff0c;需要利用先前的S7-200 PLC与ifix进行通讯&#xff0c;故而&#xff0c;在做好上位机后&#xff0c;在现场实际测试了下。通过CP243-1以太网模块&#xff0c;顺利与KEPWARE建立连接&#xff0c;其中当然也有些要点要注意&#xff1a; 1.在kepware…...

天津网站建设交易/引流用什么话术更吸引人

7、今有三分之一&#xff0c;五分之二。问合之得几何&#xff1f; 答曰&#xff1a;十五分之十一。 译文&#xff1a; 设有分数13、25&#xff0c;问相加得多少&#xff1f; 答&#xff1a;1115。...

wordpress 后台设置/万网官网域名查询

2018年南开大学物理保研夏令营通知导读&#xff1a;南开大学物理2018年保研夏令营通知已经公布&#xff0c;宣讲及面试活动时间为4月27日(周四)上午8:00-12:00。具体内容请看如下信息&#xff0c;想了解更多相关信息请持续关注我们应届毕业生考试网!为方便广大2018届优秀应届本…...

找外包公司做网站给源码吗/网课免费平台

点击上方“蓝色字”可关注我们&#xff01;暴走时评&#xff1a;欧盟&#xff08;EU&#xff09;对分布式账本技术&#xff08;DLT&#xff09;的“前景和挑战”进行了数月的监测和观察&#xff0c;最终决定进入区块链行业。2018年&#xff0c;欧盟对该领域发起了多个倡议和决议…...

网站注册页面设计/网站百度推广

如今Python在自动化办公领域的表现越来越亮眼&#xff0c;受到了很多非IT的职场人士的推崇&#xff0c;也引得更多的人去了解、学习Python。但是很多初学者都会面临这么一个困惑&#xff1a;想把Python应用在工作中&#xff0c;却不知从何下手&#xff01; 今天就给大家捋一捋…...