Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >golang快速入门:流程控制

golang快速入门:流程控制

作者头像
程序猿川子
发布于 2025-02-06 09:58:00
发布于 2025-02-06 09:58:00
560
举报

流程控制主要用于设定计算执行的次序,建立程序的逻辑结构。Go 语言的流程控制和其他编程语言类似,支持如下几种流程控制语句:

  • 条件语句:用于条件判断,对应的关键字有 if、else 和 else if
  • 分支语句:用于分支选择,对应的关键字有switch、case、select(用于通道)
  • 循环语句:用于循环迭代,对应的关键字有for、range
  • 跳转语句:用于代码跳转,对应的关键字有goto

根据具体的业务逻辑,灵活组合上述控制语言来实现相应的功能。

条件语句

条件语句的示例模板如下:

Untitled (10).jpeg
Untitled (10).jpeg

条件语句使用示例如下:

1、中断式

Untitled (11).jpeg
Untitled (11).jpeg

2、嵌套式

Untitled (12).jpeg
Untitled (12).jpeg

3、多段式

Untitled (13).jpeg
Untitled (13).jpeg

Go 语言的条件语句,需要注意以下几点:

  • 条件语句不需要使用圆括号将条件包含起来 ();
  • 无论语句体内有几条语句,花括号 {} 都是必须存在的;
  • 左花括号 { 必须与 if 或者 else 处于同一行;
  • 在 if 之后,条件语句之前,可以添加变量初始化语句,使用 ; 间隔,比如上述代码可以这么写 if score := 100; score > 90 {}

分支语句

分支语句会根据传入条件的不同,选择不同的分支代码执行。

Untitled (14).jpeg
Untitled (14).jpeg

表达式使用示例

Untitled (15).jpeg
Untitled (15).jpeg

明确等值判断使用示例

Untitled (17).jpeg
Untitled (17).jpeg

分支合并

在 Go 语言中,我们可以用逗号分隔不同的分支条件来达到合并分支语句的目的,如 case 1,2。

如果你想要跨分支执行,可以通过一个 fallthrough 语句来声明

Untitled (18).jpeg
Untitled (18).jpeg

switch 总结

  • 单个 case 中,可以出现多个结果选项(通过逗号分隔)
  • 通过fallthrough 关键字,可以跨分支执行
  • 表达式和明确定定植判断有区别(switch 之后的条件表达式)

循环语句

1、for循环

Go 语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构。

Untitled (19).jpeg
Untitled (19).jpeg

2、无限循环

对于无限循环场景,可以通过不带循环条件的 for 语句实现。

通过 break 语句可以中断无限循环。

Untitled (20).jpeg
Untitled (20).jpeg

3、嵌套循环

实现乘法表

Untitled (22).jpeg
Untitled (22).jpeg

4、for-range 结构

Go 语言还支持通过 for-range 结构对(数组、切片、map)进行循环遍历。

Untitled (21).jpeg
Untitled (21).jpeg

循环总结:

  • 不支持 whie 和 do-while 结构的循环语句
  • 可以通过 for-range 结构对可迭代集合进行遍历

跳转语句

  1. break 与 continue 语句

Go 语言支持在循环语句中通过 break 语句跳出循环,通过 continue 语句进入下一个循环。

Untitled (23).jpeg
Untitled (23).jpeg
  1. 标签

Go 语言的 break 和 contine 与其他语言的不同之处在于支持与标签结合跳转到指定的标签语句,从而改变这两个语句的默认跳转逻辑,标签语句通过标签 + :进行声明:

Untitled (25).jpeg
Untitled (25).jpeg

Label在最外层for循环,此时break Label会直接跳出外层for循环,返回end

  1. goto 语句

Go 语言支持 goto 关键字,goto 语句的语义非常简单,就是跳转到本函数内的某个标签,如:

Untitled (24).jpeg
Untitled (24).jpeg

当第一次满足 j > 1 的条件时,代码就会跳转到 EXIT 标签指定的位置,继续后续代码执行。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
输出cglib以及jdk动态代理产生的class文件
好奇心重的小伙伴有一种知其然,亦欲知其所以然的特性,我们在spring事务应用中会接触到aop技术,而aop背后隐藏的恰恰是以jdk以及cglib为基础的动态代理技术,博主不才,将自己的学习历程记录于此,希望帮到有需求的同行,其实我们仅需要进行简单的设置,即可输出cglib以及jdk动态代理产生的class文件,然后使用jdt或者其他工具查看生成的动态代理类,以验证理论知识:
johnhuster的分享
2022/03/29
5430
Java代理模式及动态代理详解
Java的动态代理在实践中有着广泛的使用场景,比如最场景的Spring AOP、Java注解的获取、日志、用户鉴权等。本篇文章带大家了解一下代理模式、静态代理以及基于JDK原生动态代理。
程序新视界
2020/03/24
5350
Java代理模式及动态代理详解
设计模式【3.2】-- JDK动态代理源码分析有多香?
前面文章有说到代理模式:http://aphysia.cn/archives/dynamicagentdesignpattern
秦怀杂货店
2021/11/06
5530
抽丝剥茧——代理设计模
代理设计模式在生活中应该很常见了,现在各种中间商的货物代售方便了我们的生活也增加了我们生活的成本。这种生活中的中间商行为就是一种代理模式。
石的三次方
2021/01/05
2670
一文读懂 Java 动态代理,那些面试中你容易忽略的细节!
本来是打算把java代理模式给写一下的,但是整理思路的时候发现这是一个庞大的工程,我需要讲清楚什么是代理模式;
程序员小强
2021/04/14
4720
【设计模式】代理模式那些事儿:静态代理,动态代理,JDK的动态代理,cglib,Spring AOP
还记得上小学时候的这篇课文吗?这是我记忆深刻的一篇语文课文,哈哈,在这里提出来让大家也回忆一下小学的故事。
行百里er
2020/12/02
3130
【设计模式】代理模式那些事儿:静态代理,动态代理,JDK的动态代理,cglib,Spring AOP
JDK动态代理详解
JDK动态代理是代理模式的一种,且只能代理接口。spring也有动态代理,成为CGLib,现在主要来看一下JDK动态代理是如何实现的?
Liusy
2020/09/01
1.1K0
JDK动态代理详解
代理、静态、动态
为其他对象提供一种代理以控制这个对象的访问,在某些情况下一个对象不能直接访问那个对象时,代理就起到了客户端和被代理对象 (委托类) 中介作用。
张小驰出没
2021/12/06
2300
代理、静态、动态
Java 动态代理详解
动态代理在Java中有着广泛的应用,比如Spring AOP、Hibernate数据查询、测试框架的后端mock、RPC远程调用、Java注解对象获取、日志、用户鉴权、全局性异常处理、性能监控,甚至事务处理等。
小旋锋
2019/01/21
1.1K0
细说JDK动态代理的实现原理
来源:blog.csdn.net/mhmyqn/article/details/48474815
Java团长
2018/12/17
3720
java设计模式之代理模式
比较官方一点解释:为另一对象提供一个替身或者占位符,以控制对这个对象的访问,这句话看起来有一些比较难理解,那么下面我们用几个方便我们理解的场景去理解这句话;
一行Java
2022/04/06
1560
java设计模式之代理模式
Spring MVC系列-(5) AOP
AOP(Aspect-Oriented Programming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。
码老思
2023/10/19
2170
Spring MVC系列-(5) AOP
【鼠年大吉】【设计模式自习室】详解代理模式
该系列会逐步更新于我的博客和公众号(博客见文章底部),也希望各位观众老爷能够关注我的个人公众号:后端技术漫谈,不会错过精彩好看的文章。
Rude3Knife的公众号
2020/02/19
3020
【设计模式自习室】详解代理模式
通俗的来讲,代理模式就是我们生活中常见的中介。在某些情况下,一个客户不想或者不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现间接引用。
蛮三刀酱
2020/02/14
4000
【设计模式自习室】详解代理模式
23天读懂23种设计模式:代理模式(结构型)
结构型模式讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象实现新的功能(对象结构型模式)。
后台技术汇
2022/05/28
2190
23天读懂23种设计模式:代理模式(结构型)
Java面试集锦(一)之Spring/SpringMVC
Spring是一套为了解决企业应用开发的复杂性而创建的框架,特点是分层的架构,允许用户在不同层面使用不同的组件进行组合。同时通过IOC容器来降低耦合,简化开发。利用AOP来进行切面编程统一管理通用模块。
凯哥Java
2022/12/16
2450
Java面试集锦(一)之Spring/SpringMVC
Java进阶 | Proxy动态代理机制详解
在说Java动态代理之前,还是要说一下Jvm加载对象的过程,这个依旧是理解动态代理的基础性原理:
知了一笑
2021/07/07
1K0
Java进阶 | Proxy动态代理机制详解
【说站】java动态如何生成代理类
h:调用处理器,也就是我们上面定义的实现了InvocationHandler接口的类实例
很酷的站长
2022/11/23
6560
【说站】java动态如何生成代理类
读源码——JDK动态代理
在 java 中,动态代理算的上是底层架构的发动机。最熟悉的包括 Spring 的 aop、rpc 的实现中也都少不了它的影子。所以,从源码的角度对 jdk 实现的动态代理加以总结。
早安嵩骏
2020/08/11
3420
​面试必备java代理 万字详解!
​代理其实不仅仅是在软件开发领域,在我们的日常生活中也是时常可见。比如某p2p老板突然携款带着小姨子跑路了,可怜了下面一堆的程序员背负一身房贷,上有老下有小,程序员只能被迫去申请劳动仲裁,劳动局就会为其指派一位代理律师全权负责程序员的仲裁事宜(PS:p2p跑路仲裁拿回工资的可能性非常低,没让你把工资退回就算好的了)。那这里面就是使用了代理模式,因为在劳动仲裁这个活动中,代理律师会全权代理程序员。比如:房东要将房子出售,于是到房地产中介公司找一个中介(代理),由他来帮房东完成销售房屋,签订合同、网签、贷款过户等等事宜。
java金融
2020/05/29
4260
​面试必备java代理 万字详解!
相关推荐
输出cglib以及jdk动态代理产生的class文件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文