Go语言 流程控制和循环语句

本文主要内容为Go语言中流程控制语句和循环语句介绍及示例。 

目录

流程控制语句

If条件语句

If使用规则

表达式语句

Switch语句

使用fallthrough

判断表达式结果

从命令行获取参数

For循环语句

简单循环

省略循环条件

For无限循环

For循环中的continue

新型for循环

忽略数组索引

总结


流程控制语句

Go 语言代码逻辑的控制

流程控制语句用于控制程序的执行顺序

这样你的程序就具备了逻辑结构

If条件语句

根据布尔值的表达式来决定选择哪个分支执行;

如果表达式的值为 true,则if分支被执行。

如果表达式的值为 false,则 else 分支被执行。

示例:

package mainimport "fmt"func main() {i := 10if i > 10 {fmt.Println("i>10")} else {fmt.Println("i<=10")}
}

If使用规则

if后面的条件表达式不需要使用()

每个条件分支(if或者else)中的大括号是必须的

if紧跟的大括号{不能独占一行

else 前的大括号}也不能独占一行

在if……else 条件语句中还可以增加多个else if

增加更多的条件分支

表达式语句

示例如下:

func main() {if i := 6; i > 10 {fmt.Println("i>10")} else if i > 5 && 1 <= 10 {fmt.Println("5<i<=10")} else {fmt.Println("i<=5")}
}

Switch语句

如果有很多分支的话,选择switch会更方便。

switch 的case 从上到下逐一进行判断;

一旦满足条件,立即执行对应的分支并返回,其余分支不再做判断。

示例:

func main() {switch i := 6; {case i > 10:fmt.Println("i>10")case i > 5 && i <= 10:fmt.Println("5<i<=10")default:fmt.Println("i<=5")}
}

注意:不需要写break。在go语言中switch case的每一条判断后,自动带break。

使用fallthrough

Go的switch,默认加上break了,不需要手动处理。

如果想向下穿透的话,那么需要加上关键字:fallthrough。

示例如下:

switch j := 1; j{
case 1:fmt.Println("1")fallthrough
case 2:fmt.Println("2")
default:fmt.Println("没有匹配")
}

 

判断表达式结果

switch可用来判断表达式的结果,设置两数比较大小,判断结果布尔值。

示例如下:

a := 2
b := 1
switch a > b {
case true:fmt.Println("a>b")
case false:fmt.Println("a<=b")
}

 

从命令行获取参数

从命令行中获取参数,并在switch中进行判断处理。

Go:os.Args 直接可以获取命令输入,是一个字符串切片

示例如下:

func main() {// os.Args ==> 直接可以获取命令输入,是一个字符串切片cmds := os.Args// os.Args[0] ==> 程序名字// os.Args[1] ==> 第一个参数,以此类推for key, cmd := range cmds {fmt.Println("key:", key, ", cmd:", cmd)}if len(cmds) < 2 {fmt.Println("请正确输入参数!")return}switch cmds[1] {case "hello":fmt.Println("hello")// fallthrough 会向下穿透fallthroughcase "world":fmt.Println("world")}
}

执行:

$ go run switch选择.go hello
key: 0 , cmd: C:\Users\18201\AppData\Local\Temp\go-build2460526206\b001\exe\switch选择.exe
key: 1 , cmd: hello
hello
world

For循环语句

简单循环

简单语句,一般用于for循环的初始化

for 循环的条件,表示 for 循环什么时候结束

更新语句,一般用于更新循环的变量

示例如下:

package mainimport "fmt"func main() {sum := 0for i := 1; i <= 100; i++ {sum += i}fmt.Println("总和:", sum)
}

 

省略循环条件

上面的for循环也可以省略循环条件

示例如下:

sum := 0
i := 1
for i <= 100 {sum += ii++
}
fmt.Println("总和:", sum)

For无限循环

无条件的for循环,又叫for无限循环。

continue 可以跳出本次循环,继续执行下一个循环。

break 可以跳出整个 for 循环,哪怕 for 循环没有执行完,也会强制终止。

示例如下:

sum := 0
i := 1
for {sum += ii++if i > 100 {break}
}
fmt.Println("总和:", sum)

 

For循环中的continue

练习使用for循环中的continue

示例如下:

sum := 0
for i := 1; i < 100; i++ {if i%2 != 0 {continue}sum += i
}
fmt.Println("总和:", sum)

 

新型for循环

大多数情况下使用的是 for range这种go语言的新型循环。

示例如下:

arr := []string{"张三", "李四"}
for i, v := range arr {fmt.Printf("数组索引%d, 对应值%s\n", i, v)
}

忽略数组索引

可使用_忽略掉数组索引。

示例如下:

arr := []string{"张三", "李四"}
for _, v := range arr {fmt.Printf("数组值%s\n", v)
}

总结

本文主要内容为Go语言中流程控制语句和循环语句介绍及示例。

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

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

相关文章

java中处理stream.filter()

在Java中&#xff0c;stream.filter方法用于对流中的元素进行筛选。filter方法接受一个Predicate&#xff08;一个返回布尔值的函数&#xff09;&#xff0c;然后返回一个包含所有匹配元素的新流。 使用场景 假设有一个包含多个元素的集合&#xff0c;需要对其中的元素进行筛…

HTTPServer改进思路1

Nginx源码思考项目改进 架构模式 事件驱动架构(EDA&#xff09;用于处理大量并发连接和IO操作 优点&#xff1a;高效处理大量并发请求&#xff0c;减少线程切换和阻塞调用技术实现&#xff1a;直接使用EPOLL&#xff0c;参考Node.js的http服务器 网络通信 协议&#xff1a;HTT…

Java 随笔记: 集合与泛型

文章目录 1. 集合框架概述2. 集合接口2.1 Collection 接口2.2 List 接口2.3 Set 接口2.4 Map 接口 3. 集合的常用操作3.1 添加元素3.2 删除元素3.3 遍历元素3.4 判断大小3.5 判断是否为空 4. 迭代器4.1 迭代器的作用4.2 迭代器的使用4.3 迭代器与增强 for 循环4.4 迭代器的注意…

异步IO的概念以及使用asyncio库进行异步编程的示例。

异步IO的概念 异步IO&#xff08;Asynchronous Input/Output&#xff09;是一种IO操作模式&#xff0c;它允许程序在等待IO操作&#xff08;如文件读写、网络请求等&#xff09;完成时继续执行其他任务&#xff0c;而不是阻塞等待IO操作完成。这种机制可以显著提高程序的性能和…

深入剖析Tomcat整体架构

目录 Tomcat简介Tomcat架构概述核心组件详解 ServerServiceConnectorEngineHostContextWrapper 生命周期与初始化请求处理流程Tomcat的线程模型配置与优化常见问题与解决方案总结 Tomcat简介 Apache Tomcat是由Apache软件基金会开发的开源Java Web服务器和Servlet容器。它实…

【LeetCode】对称二叉树

目录 一、题目二、解法完整代码 一、题目 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#…

友力科技数据中心搬迁方案

将当前运行机房中的所有设备、应用系统安全搬迁至新数据中心机房&#xff0c;实现平滑切换、平稳过渡&#xff0c;最大限度地降低搬迁工作对业务的影响。 为了确保企事业单位能够顺利完成数据中心机房搬迁工作&#xff0c;我们根据实际经验提供了4个基本原则&#xff0c;希望能…

异步电机矢量控制matlab simulink

1、内容简介 略 86-可以交流、咨询、答疑 异步电机、矢量控制 2、内容说明 略 3、仿真分析 略 4、参考论文 略

YOLOv2小白精讲

YOLOv2是一个集成了分类和检测任务的神经网络&#xff0c;它将目标检测和分类任务统一在一个单一的网络中进行处理。 本文在yolov1的基础上&#xff0c;对yolov2的网络结构和改进部分进行讲解。yolov1的知识点可以看我另外一篇博客&#xff08;yolov1基础精讲-CSDN博客&#xf…

设计模式-抽象工厂

抽象工厂属于创建型模式。 抽象工厂和工厂设计模式的区别&#xff1a; 工厂模式的是设计模式中最简单的一种设计模式&#xff0c;主要设计思想是&#xff0c;分离对象的创建和使用&#xff0c;在Java中&#xff0c;如果需要使用一个对象时&#xff0c;需要new Class()&#xff…

day18-binary tree-part06-7.20

tasks for today: 1. 530.二叉搜索树的最小绝对差 2. 501.二叉搜索树中的众数 3. 236.二叉树的最近公共祖先 ----------------------------------------------------------------- 1. 530.二叉搜索树的最小绝对差 in this practice, the target tree is a binary search …

RAG-LLM Survey

大模型虽然厉害&#xff0c;但是存在着幻觉、知识陈旧等问题。检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;可以通过挂载外部知识库&#xff0c;来提升生成内容的准确性和可信度。了解一个研究方向的最快的方法&#xff0c;就是阅读相关的综述。今…

Python数据可视化------动态柱状图

一、基础柱状图 # 基础柱状图 # 导包 from pyecharts.charts import Bar from pyecharts.options import *# 构建柱状图 bar Bar() # 添加数据&#xff08;列表&#xff09; x_list ["张三", "李四", "王五", "赵六"] y_list [50,…

你的生产车间有个好“布局”吗?

对于生产车间而言&#xff0c;科学合理的布局设计便是这“成功的一半”。在现代制造环境中&#xff0c;高效的物流动线、合理的设备配置、以及人性化的工作环境&#xff0c;是提升生产效率、保障产品质量的关键。 一个好布局的生产车间需具备以下几个关键特征&#xff0c;以确保…

【ADRC笔记】LESO-Wb

公式推导(bilibili) 一阶ESO 二阶ESO 二阶自抗扰控制器基本原理 选取状态变量 观测器收敛性推导 wo 观测器带宽

【ubuntu 网卡混杂模式设置】

ubuntu 网卡混杂模式设置 在 ubuntu上设置混杂模式确保防火墙允许混杂模式检查网卡是否已设置为混杂模式使用 ifconfig使用 ethtool使用 ip link 在 ubuntu上设置混杂模式 本文介绍在Ubuntu系统上查看网卡是否是混杂模式&#xff0c;以及设置混杂模式。 确保防火墙允许混杂模…

数据结构(下)复习

一丶数据结构概述 1.数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的关系和运算等的学科。 2.基本数据结构&#xff0c;从逻辑上可分为线性结构和非线性结构&#xff0c;大体上可分成表结构、树结构、图结构 和散结构4大类 表结构用于表示结点的…

Java 滑动时间窗口统计接口调用次数

Java 滑动时间窗口统计接口调用次数 在分布式系统中&#xff0c;接口调用次数的监控是一个非常重要的任务。它可以帮助我们了解系统的负载情况&#xff0c;及时发现性能瓶颈&#xff0c;以及为系统扩容提供依据。在这篇文章中&#xff0c;我们将讨论如何使用 Java 实现滑动时间…

科普文:百度交易中台之订单系统架构浅析

百度交易中台作为集团移动生态战略的基础设施&#xff0c;面向收银交易与清分结算场景&#xff0c;为赋能业务提供高效交易生态搭建。目前支持百度体系内多个产品线&#xff0c;主要包含&#xff1a;小程序&#xff0c;地图打车&#xff0c;百家号&#xff0c;招财猫&#xff0…

算法题目整合

文章目录 121. 小红的区间翻转142. 两个字符串的最小 ASCII 删除总和143. 最长同值路径139.完美数140. 可爱串141. 好二叉树 121. 小红的区间翻转 小红拿到了两个长度为 n 的数组 a 和 b&#xff0c;她仅可以执行一次以下翻转操作&#xff1a;选择a数组中的一个区间[i, j]&…