9.5 Go语言入门(条件语句和循环语句)

Go语言入门(条件语句和循环语句)

  • 目录
    • 四、条件语句和循环语句
      • 1. 条件语句
        • 1.1 if 语句
        • 1.2 if-else 语句
        • 1.3 if-else if-else 语句
        • 1.4 带初始化语句的 if
        • 1.5 switch 语句
        • 1.6 带条件的 switch
        • 1.7 多个条件的 case
      • 2. 循环语句
        • 2.1 基本 for 循环
        • 2.2 省略初始化语句和后置语句的 for 循环
        • 2.3 无限循环
        • 2.4 使用 range 的 for 循环
      • 3. 控制语句
        • 3.1 break 语句
        • 3.2 continue 语句
        • 3.3 goto 语句

目录

Go 语言(Golang)是一种静态类型、编译型语言,由 Google 开发,专注于简洁性、并发和高效性。

下面是 Go 语言的基础语法讲解和代码示例。


上一篇:三、Go语言入门(运算符)


四、条件语句和循环语句

Go 语言中,条件语句和循环语句是控制程序流的基本结构。通过这些语句,可以实现不同的逻辑分支和重复操作。下面详细讲解 Go 语言中的条件语句和循环语句,并提供代码示例。

1. 条件语句

1.1 if 语句

if 语句用于条件判断。基本语法如下:

if condition {// 当 condition 为 true 时执行
}

package mainimport "fmt"func main() {age := 20if age >= 18 {fmt.Println("You are an adult.")}
}
1.2 if-else 语句

if-else 语句用于在条件为 false 时执行另一个分支。

package mainimport "fmt"func main() {age := 16if age >= 18 {fmt.Println("You are an adult.")} else {fmt.Println("You are a minor.")}
}
1.3 if-else if-else 语句

if-else if-else 语句用于多个条件判断。

package mainimport "fmt"func main() {score := 85if score >= 90 {fmt.Println("Grade: A")} else if score >= 80 {fmt.Println("Grade: B")} else if score >= 70 {fmt.Println("Grade: C")} else if score >= 60 {fmt.Println("Grade: D")} else {fmt.Println("Grade: F")}
}
1.4 带初始化语句的 if

if 语句支持在条件判断之前执行一个简单的语句。这个语句的作用域仅限于 if 语句块。

package mainimport "fmt"func main() {if x := 10; x > 5 {fmt.Println("x is greater than 5")}// fmt.Println(x) // 这里不能访问 x,因其作用域仅限于 if 语句块
}
1.5 switch 语句

switch 语句用于简化多个条件判断。每个 case 分支会自动终止,除非使用 fallthrough 关键字。

package mainimport "fmt"func main() {day := 3switch day {case 1:fmt.Println("Monday")case 2:fmt.Println("Tuesday")case 3:fmt.Println("Wednesday")case 4:fmt.Println("Thursday")case 5:fmt.Println("Friday")default:fmt.Println("Weekend")}
}
1.6 带条件的 switch

switch 语句可以不带表达式,这时每个 case 都是一个独立的条件判断。

package mainimport "fmt"func main() {num := -10switch {case num < 0:fmt.Println("Number is negative")case num == 0:fmt.Println("Number is zero")case num > 0:fmt.Println("Number is positive")}
}
1.7 多个条件的 case

一个 case 分支可以包含多个条件,用逗号分隔。

package mainimport "fmt"func main() {char := 'a'switch char {case 'a', 'e', 'i', 'o', 'u':fmt.Println("Vowel")default:fmt.Println("Consonant")}
}

2. 循环语句

for 是 Go 唯一的循环语句,可以实现各种循环结构。

2.1 基本 for 循环

for 循环包括初始化语句、条件表达式和后置语句。

package mainimport "fmt"func main() {for i := 0; i < 5; i++ {fmt.Println(i)}
}
2.2 省略初始化语句和后置语句的 for 循环

可以省略 for 循环的初始化语句和后置语句。

package mainimport "fmt"func main() {i := 0for i < 5 {fmt.Println(i)i++}
}
2.3 无限循环

省略条件表达式,可以创建一个无限循环。

package mainimport "fmt"func main() {i := 0for {fmt.Println(i)i++if i >= 5 {break}}
}
2.4 使用 range 的 for 循环

range 关键字可以用来迭代数组、切片、字符串、映射和通道。

package mainimport "fmt"func main() {// 迭代数组arr := [5]int{1, 2, 3, 4, 5}for index, value := range arr {fmt.Println("Index:", index, "Value:", value)}// 迭代字符串str := "hello"for index, char := range str {fmt.Println("Index:", index, "Char:", char)}// 迭代映射m := map[string]int{"a": 1, "b": 2}for key, value := range m {fmt.Println("Key:", key, "Value:", value)}
}

3. 控制语句

break 和 continue 用于控制循环的执行。

3.1 break 语句

break 用于终止循环。

package mainimport "fmt"func main() {for i := 0; i < 10; i++ {if i == 5 {break}fmt.Println(i)}
}
3.2 continue 语句

continue 用于跳过当前迭代,继续下一次迭代。

package mainimport "fmt"func main() {for i := 0; i < 10; i++ {if i%2 == 0 {continue}fmt.Println(i)}
}
3.3 goto 语句

Go 语言还支持 goto 语句用于无条件跳转,尽量避免使用 goto,以保持代码的可读性和可维护性。

package mainimport "fmt"func main() {i := 0
Loop:fmt.Println(i)i++if i < 5 {goto Loop}
}

通过理解条件语句和循环语句,可以编写逻辑复杂且结构清晰的 Go 语言程序。这些控制结构是编程中不可或缺的部分,掌握它们将极大提升你的编程能力。


下一篇:五、Go语言入门(数组、切片和指针)


在这里插入图片描述

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

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

相关文章

转行3年涨薪300%,我总结了一套产品经理快速入门指南!

想转行的产品小白&#xff0c;初期一定会遇到这个问题——我要如何 0 基础转行产品经理&#xff1f; 要想 0 基础快速转行产品经理&#xff0c;我通过个人实践总结了 5 个关键点&#xff0c;可以参考。 一、熟悉产品经理的工作全流程 转行的产品小白&#xff0c;首先要建立产…

Amesim应用篇-制冷剂压焓图软件Coolpack简介与冷媒流量评估

前言 空调系统仿真不可避免的会涉及到冷媒的物性参数、压焓图等信息。冷媒的物性可以在Amesim中自带的模型中查看。而压焓图可以通过Coolpack软件绘制。 一 软件介绍 Coolpack是个独立的小程序&#xff0c;集成了各种冷媒的性能参数&#xff0c;可以直观查看冷媒工作工况曲线…

c语言:摆脱对指针的恐惧【4】

在上一期指针我们讲到了二级指针是的作用是存放一级指针的地址&#xff0c;还讲了指针数组是一个可以存放若干个指针变量的数组&#xff0c;这里我们再复习一下&#xff0c;下面指针数组是什么意思&#xff1f; int* arr1[10]; //整形指针的数组 char *arr2[4]; //一级字符指针…

Python中动态调用C#的dll动态链接库中方法

在Python中调用C#的dll库_哔哩哔哩_bilibili 环境准备&#xff1a; 安装 pythonnet pip install pythonnet在Python中调用C#动态链接库&#xff08;DLL&#xff09;&#xff0c;可以使用pythonnet库&#xff0c;它允许直接使用 .NET 的程序集。以下是一个示例&#xff0c;…

C++ 写的_string类,兼容std::string, MFC CString和 C# 的string

代码例子&#xff1a; using namespace lf; int main() { CString s1 _t("http://www.csdn.net"); _string s2 s1; CString s3 s2; _pcn(s1); _pcn(s2); _pcn(s3); return 0; } 输出&#xff1a; _Str.h /***************************************…

在使用LabVIEW控制多个串口设备进行数据读取时,读取时间过长

在使用LabVIEW控制多个串口设备进行数据读取时&#xff0c;如果发现数据更新时间超过5秒&#xff0c;可以从以下几个方面进行分析和解决&#xff1a; 1. 串口配置与通信参数 确保每个串口的通信参数&#xff08;波特率、数据位、停止位、校验位等&#xff09;配置正确&#x…

【数据结构】二叉树的功能实现

文章目录 关于二叉树的创建如何创建二叉树实现二叉树的前、中、后序遍历层序遍历 关于二叉树的创建 在笔者的上一篇文章中堆进行了一个详细介绍&#xff0c;而二叉树是以堆为基础进行创建&#xff0c;它与堆的显著不同是 堆像是一个线性结构&#xff0c;堆的结构往往是一个数…

springboot项目,@Test写法 @Before @After

某文件示例 package cn.xxx.crm.boss;import cn.xxxx.crm.manager.mq.rabbit.AliyunCredentialsProvider; import com.rabbitmq.client.AMQP; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; im…

2024电工杯数学建模B题Python代码+结果表数据教学

2024电工杯B题保姆级分析完整思路代码数据教学 B题题目&#xff1a;大学生平衡膳食食谱的优化设计及评价 以下仅展示部分&#xff0c;完整版看文末的文章 import pandas as pd df1 pd.read_excel(附件1&#xff1a;1名男大学生的一日食谱.xlsx) df1# 获取所有工作表名称 e…

XSS漏洞:pikachu靶场中的XSS通关

目录 1、反射型XSS&#xff08;get&#xff09; 2、反射性XSS&#xff08;POST&#xff09; 3、存储型XSS 4、DOM型XSS 5、DOM型XSS-X 6、XSS之盲打 7、XSS之过滤 8、XSS之htmlspecialchars 9、XSS之href输出 10、XSS之js输出 最近在学习XSS漏洞&#xff0c;这里使用…

与WAF的“相爱相杀”的RASP

用什么来保护Web应用的安全&#xff1f; 猜想大部分安全从业者都会回答&#xff1a;“WAF&#xff08;Web Application Firewall,应用程序防火墙&#xff09;。”不过RASP&#xff08;Runtime Application Self-Protection&#xff0c;应用运行时自我保护&#xff09;横空出世…

LeetCode198:打家劫舍

题目描述 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个房屋存…

【LeetCode】【5】最长回文子串

文章目录 [toc]题目描述样例输入输出与解释样例1样例2 提示Python实现动态规划 个人主页&#xff1a;丷从心 系列专栏&#xff1a;LeetCode 刷题指南&#xff1a;LeetCode刷题指南 题目描述 给一个字符串s&#xff0c;找到s中最长的回文子串 样例输入输出与解释 样例1 输入…

打造专业级网页排版:全方位解析专业字体家族font-family实践与全球知名字体库导览

CSS中的字体家族&#xff08;font-family&#xff09;属性用于指定文本所使用的字体系列。它允许开发者选择一种或多种字体作为备选&#xff0c;确保在浏览器中以最佳可用字体显示文本。本文将深度解析专业级网页排版中字体家族&#xff08;font-family&#xff09;设置的实践技…

嵌入式实时操作系统笔记2:UCOS基础知识_UC/OS-III移植(STM32F4)_编写简单的UC/OS-III任务例程(失败.....)

今日学习嵌入式实时操作系统RTOS&#xff1a;UC/OS-III实时操作系统 本文只是个人学习笔记备忘用&#xff0c;附图、描述等 部分都是对网上资料的整合...... 文章主要研究如何将UC/OS-III 移植到 STM32 F407VET6上&#xff0c;提供测试工程下载 &#xff08;2024.5.21 文章未…

明天(周六)下午!武汉Linux爱好者线下沙龙,我们在华中科技大学等你!

2024 年 5月 25 日&#xff08;周六&#xff09;下午&#xff0c;我们将在「武汉市洪山区」 珞喻路 1037 号华中科技大学南五楼 613 室举办武汉 Linux 爱好者线下沙龙&#xff08;WHLUG&#xff09;&#xff0c;欢迎广大 Linux 爱好者来到现场&#xff0c;与我们一同交流技术&a…

【Spring】SSM介绍_SSM整合

1、SSM介绍 1.1简介 SSM&#xff08;Spring SpringMVC MyBatis&#xff09;整合是一种流行的Java Web应用程序框架组合&#xff0c;它将Spring框架的核心特性、SpringMVC作为Web层框架和MyBatis作为数据访问层框架结合在一起。这种整合方式提供了从数据访问到业务逻辑处理再…

构建智能化的语言培训教育技术架构:挑战与机遇

随着全球化的发展和人们对语言学习需求的增长&#xff0c;语言培训教育行业正面临着越来越多的挑战和机遇。在这个背景下&#xff0c;构建智能化的语言培训教育技术架构成为提升服务质量和效率的重要手段。本文将探讨语言培训教育行业的技术架构设计与实践。 一、智能化教学平台…

接口响应断言

目录 接口断言介绍接口断言方式介绍响应状态码断言 课程目标 掌握什么是接口断言。了解接口断言的多种方式。掌握如何对响应状态码完成断言。 思考 这两段代码是完整的接口自动化测试代码吗&#xff1f; …省略… when().get(“https://httpbin.ceshiren.com/get?namead&…

Golang | Leetcode Golang题解之第109题有序链表转换二叉搜索树

题目&#xff1a; 题解&#xff1a; var globalHead *ListNodefunc sortedListToBST(head *ListNode) *TreeNode {globalHead headlength : getLength(head)return buildTree(0, length - 1) }func getLength(head *ListNode) int {ret : 0for ; head ! nil; head head.Next…