Go语言之路————条件控制:if、for、switch

Go语言之路————if、for、switch

  • 前言
  • if
  • for
  • switch
  • goto和label

前言

  • 我是一名多年Java开发人员,因为工作需要现在要学习go语言,Go语言之路是一个系列,记录着我从0开始接触Go,到后面能正常完成工作上的业务开发的过程,如果你也是个小白或者转Go语言的,希望我这篇文章对你有所帮助。
  • 有关go其他基础的内容的文章大家可以查看我的主页,接下来主要就是把这个系列更完,更完之后我会在每篇文章中挂上连接,方便大家跳转和复习。

if

go中的if语句,和Java中的大差不差,唯一的差别就是,条件判断语句不需要加括号,看看下面这个例子:

func main() {ifTest(-2)ifTest(1)ifTest(20)
}func ifTest(num int) {if num < 0 {fmt.Println("这是一个负数")} else if num < 10 {fmt.Println("小于10的整数")} else {fmt.Println("大于10的整数")}
}//输出结果:
这是一个负数
小于10的整数
大于10的整数

for

在go中,可以说if和for是使用最多的,而 for循环又是花样最多的,可以有很多语法糖,java中就有很多,fori 、增强for、foreach,go也是一样的,只是写法有略微不同

  1. 我们先看看最常见的fori:

    func main() {for i := 0; i < 10; i++ {fmt.Println(i)}
    }
    

    我们咋一眼看过去,是不是和java的一模一样,只是有细微的差别,比如i的定义、for后面的逻辑没有括号包裹,大家有没有发现,go中就是不喜欢用括号把我们的语句包裹起来,是为了简洁吗?

  2. 我们还可以一次性初始化多个变量,多个判断语句
    下面这个例子就是同时定义i和j两个变量,然后去做循环和条件判断处理

    	for i, j := 0, 0; i < 10 && j < 20; i, j = i+1, j+2 {fmt.Println(i, j)}
    
  3. go中没有while关键词,用for就可以来表示while
    当我们只保留循环条件,那么for就变成了while

    func main() {a := 1for a < 10 {a++}
    }
    

    如果我们要实现while(true),那么我们就不加循环条件,下面这个案例就是一个死循环,程序会一直执行a++

    func main() {a := 1for {a++}
    }
    
  4. for range
    for range可以更加方便的遍历一些可迭代的数据结构,如数组,切片,字符串,映射表,通道。语句格式如下:

    for index, value := range iterable {}
    

    在这个格式中,index代表我们的下标,而value代表的是值,类似与这种表达式返回两个值的,后面我们会经常遇到,如果我们只想关注其中一个,那么可以用_下划线代替,比如上面的案例可以这样写:对于不想处理的index或者value,用_代替后,编辑器就不会报错了。

    	for _, value := range iterable {}for index, _ := range iterable {}
    
  5. 用range遍历一个字符串

    str := "hello world"
    for index, value := range str {fmt.Println(index, value)
    }
    输出:
    0 104
    1 101
    2 108
    3 108
    4 111
    

    为何输出的是数字,因为go中默认输出的是Unicode码,要想输出字母可以用fmt.printf结合%c来转换。
    6. break
    和java中的break一样,终止循环的关键字,这里就不展开说明了
    7. continue
    和java中的continue一样,这里就不展开说明了
    当然,正如前面说的,range用的最多的就是遍历数组、切片、map等,后面我们讲到的时候会再次提及。

switch

go中的switch也是和Java的大差不差,也是switch关键字后面参数没有括号,我们直接看案例:

func main() {switchTest(1)switchTest(2)switchTest(22)
}func switchTest(num int) {switch num {case 1:fmt.Println(1)case 2:fmt.Println(2)default:fmt.Println("任何数")}
}//输出:
1
2     
任何数

当然,switch还有很多变种写法,比如我们要判断的值不是参数传进来的,而是某个方法返回来的:

func main() {switchTest()
}func switchTest() {switch num := getNum(); {case num == 1:fmt.Println(1)case num == 2:fmt.Println(2)default:fmt.Println("任何数")}
}func getNum() int {return 1
}//输出1

fallthroug:这个关键词代表着执行当前分支之后,程序不break,不管判断条件强制执行下一个分支,我们如果在上面的案例中加入这个关键字,就会输出1,2

```go
func main() {switchTest()
}func switchTest() {switch num := getNum(); {case num == 1:fmt.Println(1)fallthroughcase num == 2:fmt.Println(2)default:fmt.Println("任何数")}
}func getNum() int {return 1
}//输出1,2

goto和label

goto和label是使用比较多的,当然break,continue也是能搭配label进行逻辑跳转,下边我们定义一个标签A:

A:fmt.Println("跳转到A标签")

然后我们结合goto,用一个简单的案例看看是怎么使用的:

func main() {test()
}func test() {for i := 0; i < 10; i++ {if i == 3 {goto A}fmt.Println(i)}
A:fmt.Println("跳转到A标签")
}输出:
0
1
2
跳转到A标签

通过输出我们看到,在for循环中,我们如果进行了goto的跳转,会终止当前的for循环。

到这里,go中的条件控制常用的就讲完了,下一篇我们将进入重头戏,说一下go中使用最多的两个数据结构:切片和map

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

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

相关文章

解锁企业数据管理统一身份认证难题,EasyMR助力企业敏捷提效

在数字经济迅猛发展的当下&#xff0c;企业数据量正以令人惊叹的速度持续增长。据IDC研究显示&#xff0c;至2025年&#xff0c;全球数据总量预计将超175 ZB。数据的爆发式增长对企业而言&#xff0c;既是机遇&#xff0c;更是巨大挑战。 如今&#xff0c;大数据已然成为企业决…

OPT: Open Pre-trained Transformer语言模型

摘要 大规模语言模型通常需要数十万计算日的训练时间&#xff0c;展现了在零样本和小样本学习中的显著能力。鉴于其计算成本之高&#xff0c;这些模型在没有大量资本投入的情况下难以复现。对于那些通过API提供的少数模型&#xff0c;研究者无法获取完整的模型权重&#xff0c…

Qt应用之MDI(多文档设计)

qt creator 版本6.8.0 MinGW 64bit 由此模块可以扩展成设计一个qt文本编辑器。 界面如下 部分功能展示如下 新建文件 打开文件 mdi模式、级联模式和平铺模式 界面和程序构建过程。 1.如图所需.cpp和.h文件 2.mainwindow.ui和tformdoc.ui界面布局如下 不懂什么是Action如何…

Linux第二课:LinuxC高级 学习记录day04

6、shell中的语句 6.3、结构性语句 6.3.1、if if…then…fi 1、结构 1&#xff09;基本结构 if 表达式 then 命令表 fi if [ 表达式 ] // 【】两侧有空格 then 命令表 fi 2&#xff09;分层结构 if 表达式 then 命令表1 else 命令表2 fi 3&#xff09;嵌套结构 if …

Java学习教程,从入门到精通,JDBC驱动程序类型及语法知识点(91)

JDBC驱动程序类型及语法知识点 一、JDBC驱动程序类型 JDBC驱动程序主要有以下四种类型&#xff1a; 1. Type 1&#xff1a;JDBC - ODBC桥驱动程序&#xff08;JDBC - ODBC Bridge Driver&#xff09; 特点&#xff1a;这种驱动程序是Java与ODBC&#xff08;Open Database C…

Linux C 使用ZBar库解析二维码和条形码

1. 编译zbar库 下载 zbar 库源码&#xff0c;这里需要注意下&#xff0c;如果识别的二维码中有中文的话&#xff0c;会出现乱码&#xff0c;一般二维码里中文为UTF-8编码&#xff0c;zbar会默认给你把UTF-8转换为ISO8859-1。有两种解决办法&#xff0c;一是自己再转换一下编码…

【北京迅为】iTOP-4412全能版使用手册-第七十九章 Qt网络编程

iTOP-4412全能版采用四核Cortex-A9&#xff0c;主频为1.4GHz-1.6GHz&#xff0c;配备S5M8767 电源管理&#xff0c;集成USB HUB,选用高品质板对板连接器稳定可靠&#xff0c;大厂生产&#xff0c;做工精良。接口一应俱全&#xff0c;开发更简单,搭载全网通4G、支持WIFI、蓝牙、…

用python实战excel和word自动化

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 python实现excel和word自动化--批量处理 前言--需求快要期末了需要&#xff0c;提交一个年级的学生成绩数据&#xff0c;也就是几百份。当前我们收集了一份excel表格&#xf…

uniapp 预加载分包,减少loading

在 uniapp 中&#xff0c;可以通过配置 pages.json 文件中的 preloadRule 属性来实现页面预加载功能。以下是具体操作步骤&#xff1a; 1. 在 pages.json 中配置 preloadRule preloadRule 用于指定哪些页面需要预加载&#xff0c;以及预加载时机。下面是一个示例配置&#xf…

C++ 智能指针、内存泄露、野指针、悬空指针

智能指针、内存泄露、野指针、悬空指针 内存泄露野指针 、悬空指针野指针悬空指针 智能指针std::unique_ptr创建 指向内存空间其它方法 std::shared_ptr 内存泄露 概念&#xff1a; 内存无法释放 举例&#xff1a; int* p new int[100]; int a{}; p &a;new了一个长度为…

介绍PyTorch张量

介绍PyTorch张量 介绍PyTorch张量 PyTorch张量是我们在PyTorch中编程神经网络时将使用的数据结构。 在编程神经网络时&#xff0c;数据预处理通常是整个过程的第一步&#xff0c;数据预处理的一个目标是将原始输入数据转换为张量形式。 torch.Tensor​类的实例 PyTorch张量…

【R安装】R语言的详细安装及环境配置(2024年11月)

目录 R及Rstudio下载R下载Rstudio下载 R及Rstudio安装R安装Rtools 安装Rstudio安装 运行 RStudio通过RStudio配置使用特定的R版本 参考 R及Rstudio下载 R下载 R官网-The R Project for Statistical Computing 点击【download R】&#xff0c;进入下载界面&#xff1a; 选择…

Docker官网安装

1.官网 官方文档 https://www.docker.com/ Docker Hub官网 镜像 https://hub.docker.com/ 2.Docker 的三要素 1、镜像 2、容器 3、仓库 小总结 3.Docker 平台架构图 &#xff08;架构版本&#xff09; 4.安装Docker CentOS | Docker Docs 1.确定你是CentOS7及以上版本 …

寒假第一次牛客周赛 Round 76回顾

AC数&#xff1a;2&#xff08;A、C&#xff09; B 思路&#xff1a; 等价于求&#xff1a; 数量最多的字符 #include<stdio.h> int main() {int n,num;int a[26]{0};//用于存储字母 a 到 z 的出现次数。scanf("%d",&n);char s[n];scanf("%s",s)…

GARCH指导的神经网络在金融市场波动性预测中的应用

“GARCH-Informed Neural Networks for Volatility Prediction in Financial Markets” 论文地址&#xff1a;https://arxiv.org/pdf/2410.00288v1 摘要 波动性作为衡量风险的关键指标&#xff0c;广泛应用于金融投资的定价中。GARCH模型及其变体是用于股票波动性预测的传统工…

STM32-笔记43-低功耗

一、什么是低功耗&#xff1f; 低功耗‌是指通过优化设计和采用特定的技术手段&#xff0c;降低电子设备在运行过程中消耗的能量&#xff0c;从而延长电池寿命、提高性能和减少发热。低功耗设计主要从芯片设计和系统设计两个方面进行&#xff0c;旨在减少所有器件的功率损耗&am…

Docker 镜像制作原理 做一个自己的docker镜像

一.手动制作镜像 启动容器进入容器定制基于容器生成镜像 1.启动容器 启动容器之前我们首先要有一个镜像&#xff0c;这个镜像可以是从docker拉取&#xff0c;例如&#xff1a;现在pull一个ubuntu镜像到本机。 docker pull ubuntu:22.04 我们接下来可以基于这个容器进行容器…

【Ubuntu 24.04】虚拟机常见问题解决

1.24开启3D加速黑屏 参考文章&#xff1a;Ubuntu24开机黑屏&#xff0c;VMware卡死&#xff0c;虚拟机繁忙解决方案 没有3D加速就没有动画&#xff0c;所以我们需要开启3D加速&#xff0c;但是直接开启3D加速会黑屏 由于Ubuntu24内部的图形加速驱动异常&#xff0c;因此需要更新…

辅助云运维

为客户提供运维支持&#xff0c;保障业务连续性。 文章目录 一、服务范围二、服务内容三、服务流程四、 服务交付件五、责任分工六、 完成标志 一、服务范围 覆盖范围 云产品使用咨询、问题处理、配置指导等&#xff1b; 云产品相关操作的技术指导&#xff1b; 云相关资源日常…

灵活妙想学数学

灵活妙想学数学 题1&#xff1a;海星有几只&#xff1f; 一共有12只海洋生物&#xff0c;分别是5只脚的海星&#xff0c;8只脚的章鱼和10只脚的鱿鱼&#xff0c;这些海洋动物的脚一共有87只&#xff0c;每种生物至少有1只&#xff0c;问海星有几只&#xff1f; 解&#xff1a…