Go 语言的控制结构:条件与循环

Go 语言提供了丰富的控制结构,使得开发者可以编写出具有复杂逻辑的程序。这些控制结构包括用于条件分支的 if-elseswitch 语句,循环控制的 for 语句,以及用于控制循环执行流的 breakcontinue 关键字。此外,Go 语言还支持 goto 语句,允许跳转到程序的任意位置。


文章目录

      • 1、条件控制
        • 1.1、if-else 结构
        • 1.2、switch 结构
        • 1.3、select 结构
      • 2、循环控制
        • 2.1、for 结构
        • 2.2、break 和 continue
        • 2.3、goto 语句
      • 3、使用实例


1、条件控制

1.1、if-else 结构

Go 的 if-else 结构用于基于条件执行不同的代码块。这是最常见的条件控制结构,它不要求条件两侧的括号,这样简化了代码的视觉复杂度。例如:

if condition {// 执行代码
} else {// 执行其他代码
}
1.2、switch 结构

switch 是另一种条件控制结构,用于基于不同的条件执行不同的代码块。switch 语句比多个 if-else 更清晰,易于管理。例如:

switch var1 {
case val1:// 执行代码
case val2:// 执行其他代码
default:// 默认执行代码
}
1.3、select 结构

Go 语言特有的 select 结构,通常与 channel 操作配合使用,允许等待多个通道操作。

2、循环控制

2.1、for 结构

Go 语言中的 for 是唯一的循环结构,非常灵活,可用于创建各种循环:

// 类似传统 for 循环
for init; condition; post { }// 类似 while 循环
for condition { }// 无限循环
for { }

使用 range 关键字,for 可以迭代数组、切片、字符串、map 或通道(channel)。这种迭代方式是处理集合数据的强大工具。

2.2、break 和 continue

break 可以终止最近的循环,continue 则跳过当前循环的剩余代码,直接开始下一次迭代。

2.3、goto 语句

虽然通常不推荐使用 goto 语句,因为它可能会使代码结构变得难以理解和维护,但在某些特定情况下,goto 可以提供一种方便的方式来跳出多重嵌套的循环。


3、使用实例

package mainimport ("fmt""runtime"
)func main() {// 示例:使用 if-else 结构num := 10if num%2 == 0 {fmt.Println(num, "is even")} else {fmt.Println(num, "is odd")}// 示例:使用 switch 结构os := runtime.GOOSswitch os {case "darwin":fmt.Println("OS X.")case "linux":fmt.Println("Linux.")default:fmt.Printf("%s.\n", os)}// 示例:使用 for-range 结构strings := []string{"hello", "world"}for i, s := range strings {fmt.Println(i, s)}
}

这个概述展示了 Go 语言中控制结构的基本用法,实现了条件判断、循环控制和基于条件的代码执行,这些是任何复杂程序所必需的。通过上面的示例,我们可以看到 Go 语言在保持简洁语法的同时,也提供了强大的程序控制能力。

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

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

相关文章

约瑟夫游戏(编号+密码)

编号为1、2、3、...、N的N个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。从指定编号为1的人开始,他的密码为M的初始值,按顺时针方向从1号自己开始顺序报数,报到指定数M时停止报数,报M的人…

i18n-demo

一、demo 1、资源文件准备 resources下放各个语言文件,直接放resources下都行。我新建一个文件夹,

房地产vr全景展示交互视频让购房者更有参与感

在当今房地产市场中,购房者的需求日益多样化和个性化。为满足这一趋势,我们创新性地将VR虚拟现实技术应用于楼盘宣传,为购房者带来前所未有的沉浸式购房体验。 一、地理位置全景展示 通过实景拍摄与VR技术的结合,我们为购房者呈现…

day26-单元测试

1. 单元测试Junit 1.1 什么是单元测试?(掌握) 1.2 Junit的特点?(掌握) 1.3 基本用法:(掌握) 实际开发中单元测试的使用方式(掌握) public class …

C语言,排序

前言 排序,可以说是数据结构中必不可缺的一环。我们创造数据存储它,要想知道数据之间的联系,比较是必不可少的。不然,费劲心思得来的数据若是不能有更多的意义,那么拿到了又有什么用? 排序是计算机内经常进…

风险投资公司正在帮助小投资者购买Anthropic、OpenAI等热门公司的股票

近年来,风险投资公司对于人工智能(AI)领域的公司,如Anthropic、Groq、OpenAI等,表现出了极高的投资热情。这些公司因为它们在AI技术方面的创新而备受瞩目。但是,对于很多小投资者来说,由于资金有…

[C#]使用C#部署yolov8的目标检测tensorrt模型

【测试通过环境】 win10 x64 vs2019 cuda11.7cudnn8.8.0 TensorRT-8.6.1.6 opencvsharp4.9.0 .NET Framework4.7.2 NVIDIA GeForce RTX 2070 Super 版本和上述环境版本不一样的需要重新编译TensorRtExtern.dll,TensorRtExtern源码地址:TensorRT-CShar…

期权的权利金怎么算的

期权权利金的计算涉及多个因素,包括敲定价格、到期时间以及整个期权合约的具体情况。期权的权利金具体的计算公式和因素可能因不同的期权合约和市场条件而有所不同,下文为大家介绍期权的权利金怎么算的 ?本文来自:期权酱 一、期权…

【LeetCode】二叉树oj专题

如有不懂的地方,可查阅往期相关文章! 个人主页:小八哥向前冲~ 所属专栏:数据结构【c语言】 目录 单值二叉树 对称二叉树 计算二叉树的深度 二叉树的前序遍历 相同二叉树 另一棵树的子树 二叉树的构建和遍历 翻转二叉树 判…

spring boot 中的异步@Async

spring boot 开启异步调用 1、启动类上添加EnableAsync注解,表示启动异步 2、在具体实现异步的方法上添加Async注解 package com.example.demo;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootAppli…

YOLOv3+mAP实现金鱼检测

YOLOv3mAP实现金鱼检测 Git源码地址:传送门 准备数据集 按帧数读取视频保存图片 video2frame.py使用labelimg标注工具对图片进行标注统一图片大小为 416x416,并把标签等信息写成.xml文件 conver_point.py读取缩放后的标签图片,转为左上角右下…

如何快速部署上线项目

CSDN 的小伙伴们,大家好呀,我是苍何。 今天在群里面看到有小伙伴反馈说,面试的时候一被问到简历中的项目还没上线,就不继续问了,感觉挺奇葩的,要知道就校招来说,项目本身大部分都是练手的项目&…

Linux基础1-基本指令3

上篇文章我们说到了文件,pwd,touch,mkdir等知识。 Linux基础1-基本指令2(你真的了解文件吗?)-CSDN博客 本文继续梳理其他基础命令 1.本章重点 1.删除一个空目录命令rmdir 2.删除一个文件指令rm(重要!) 3.man命令&am…

Lf工作流自定义html节点

1.定义js文件CustomCircle.js import { HtmlNode, HtmlNodeModel } from "logicflow/core"; class UmlModel extends HtmlNodeModel {setAttributes() {this.text.editable false; // 禁止节点文本编辑// 设置节点宽高和锚点const width 120;const height 70;thi…

做视频号小店保证金要交多少?保证金提现条件是什么?

大家好,我是喷火龙。 做视频号小店也是需要缴纳保证金的,保证金分为类目保证金和浮动保证金。 先来说说类目保证金,类目保证金由视频号小店主体资质类型和经营商品类目决定。 类目保证金有以下三点需要注意: 1. 如果你要申请新…

CentOS 7~9 救援模式恢复root密码实战指南

在管理Linux服务器时,忘记root密码是一件棘手的事情,但幸运的是,CentOS提供了救援模式来帮助我们重置root密码。本文将详细介绍如何通过GRUB引导菜单进入紧急模式(或称为救援模式),进而恢复root用户的密码。…

Python量化交易学习——Part4:基于基本面的单因子选股策略

技术分析与基本面分析是股票价格分析最基础也是最经典的两个部分。技术分析是针对交易曲线及成交量等指标进行分析,基本面分析是基于公司的基本素质进行分析。 一般来说选股要先选行业,在选个股,之后根据技术分析选择买卖节点,因此针对行业及个股的基本面分析是选股的基础。…

【ARMv7-A】——WFE(wait for event)

文章目录 WFE基本概念工作原理事件类型使用场景WFIWFEWFE 和 WFI 相同点WFE 和 WFI 不同点触发条件事件标志影响多核系统中的应用使用场景:代码实例linux 内核中的 WFI 指令WFE WFE 即 Wait for ev

# 全面解剖 消息中间件 RocketMQ-(4)

全面解剖 消息中间件 RocketMQ-(4) 一、RocketMQ 顺序消息分析 1、消息有序:指的是可以按照消息的发送顺序来消费(FIFO)。RocketMQ 可以严格的保证消息有序,可以分为分区有序或者全局有序。 2、顺序消费的原理解析 在默认的情…

身份证真假查询API、C#身份证识别、驾驶证识别接口

线上平台想要在节省成本、节省时间的前提下实现身份证实名认证的功能,可以考虑云服务平台,例如翔云API开放平台,专注于数字化接口服务的提供。翔云身份证实名认证接口,搭配翔云身份证识别接口,实时联网秒速核验身份证信…