【新人系列】Golang 入门(三):条件循环

news/2025/3/11 2:50:36/

✍ 个人博客:https://blog.csdn.net/Newin2020?type=blog
📝 专栏地址:https://blog.csdn.net/newin2020/category_12898955.html
📣 专栏定位:为 0 基础刚入门 Golang 的小伙伴提供详细的讲解,也欢迎大佬们一起交流~
📚 专栏简介:在这个专栏,我将带着大家从 0 开始入门 Golang 的学习。在这个 Golang 的新人系列专栏下,将会总结 Golang 入门基础的一些知识点,并由浅入深的学习这些知识点,方便大家快速入门学习~
❤️ 如果有收获的话,欢迎点赞 👍 收藏 📁 关注,您的支持就是我创作的最大动力 💪

在这里插入图片描述

1. if else

go 语言中的 if else 写法和 C / C++ 的类似,其中不同的地方如下:

  1. if 后面没有括号,如果你写了括号,则在保存代码时编译器会自动帮你去掉。
  2. if 后面必须大括号,不能像 C / C++ 一样与 if 里面的语句在同一行。
go">package mainimport "fmt"func main() {if 7%2 == 0 {fmt.Println("7 is even")} else {fmt.Println("7 is odd")}if num := 9; num < 0 {fmt.Println(num , "is negative")} else if num < 10 {fmt.Println(num, "has 1 digit")} else {fmt.Println(num, "has multiple digits")}
}

运行结果:

7 is odd
9 has 1 digit

2. for 循环

go 语言中并没有什么 while、do while 循环,只有 for 循环。最简单的 for 循环就是在后面什么都不加,代表一个死循环。不过循环的过程中可以使用 break 退出,或者 continue 来跳过本次循环后续的代码。另外,for 中间的三段任何一段都可以省略。

go">package mainimport "fmt"func main() {fmt.Println("first part")for {fmt.Println("loop")break}fmt.Println("second part")for j := 7; j < 9; j++ {fmt.Println(j)}fmt.Println("thrid part")for n := 0; n < 5; n++ {if n % 2 == 0 {continue}fmt.Println(n)}fmt.Println("fourth part")i := 1for i <= 3 {fmt.Println(i)i++}
}

运行结果:

first part
loop
second part
7
8
thrid part
1
3
fourth part
1
2
3

3. range

go 语言中可以通过 range 来快速实现遍历操作,在其遍历时,会返回两个值,第一个是索引,第二个是对应位置的值。如果我们不需要索引的话,可以使用下划线来忽略。

go">package mainimport "fmt"func main() {nums := []int{2, 3, 4}sum := 0for i, num := range nums {sum += numif num == 2 {fmt.Println("index:", i, "num:", num) // index: 0 num: 2}}fmt.Println(sum) // 9m := map[string]string{"a": "A", "b": "B"}for k, v := range m {fmt.Println(k, v) // b 8; a A}for k := range m {fmt.Println("key", k) // key a; key b}
}

4. switch

go 语言中的 switch 也和 C++ / C 中的比较类似,不同的地方如下:

  1. go 语言 switch 后面直接跟的是变量名,而不是加括号。
  2. 在 C++ 中 switch case 如果不加 break 的话会继续往下跑完所有的 case,而在 go 中则不用加 break,就会自动跳出。
  3. go 语言 switch 可以使用任意的变量类型,甚至可以用来取代 if else 语句。可以在 switch 后面不加任何的变量,然后再 case 里面写条件分支,这样会比一连串的 if else 语句逻辑看起来更加清晰。
go">package mainimport ("fmt""time"
)func main() {a := 2switch a {case 1:fmt.Println("one")case 2:fmt.Println("two")case 3, 4:fmt.Println("three or four")default:fmt.Println("outer")}t := time.Now()switch {case t.Hour() < 12:fmt.Println("It's before noon")default:fmt.Println("It's after noon")}
}

运行结果:

two
It's before noon

http://www.ppmy.cn/news/1578234.html

相关文章

mysql,docker一键创建以及链接报错:Public Key Retrieval is not allowed

创建&#xff1a; docker run --name mysql-test -e MYSQL_ROOT_PASSWORD123 -d -p 13306:3306 mysql:8.0.39 docker exec -it mysql-test /bin/bash mysql -u root -p 报错&#xff1a;Public Key Retrieval is not allowed

PTA 7-6 列出连通集

题目详情&#xff1a; 给定一个有 n 个顶点和 m 条边的无向图&#xff0c;请用深度优先遍历&#xff08;DFS&#xff09;和广度优先遍历&#xff08;BFS&#xff09;分别列出其所有的连通集。假设顶点从 0 到 n−1 编号。进行搜索时&#xff0c;假设我们总是从编号最小的顶点出…

分布式ID生成方案:数据库号段、Redis与第三方开源实现

分布式ID生成方案&#xff1a;数据库号段、Redis与第三方开源实现 引言 在分布式系统中&#xff0c;全局唯一ID生成是核心基础能力之一。本文针对三种主流分布式ID生成方案&#xff08;数据库号段模式、Redis方案、第三方开源框架&#xff09;进行解析&#xff0c;从实现原理…

23种设计模式简介

一、创建型&#xff08;5种&#xff09; 1.工厂方法 总店定义制作流程&#xff0c;分店各自实现特色披萨&#xff08;北京店-烤鸭披萨&#xff0c;上海店-蟹粉披萨&#xff09; 2.抽象工厂 套餐工厂&#xff08;家庭装含大披萨薯条&#xff0c;情侣装含双拼披萨红酒&#…

机器学习数学基础:42.AMOS 结构方程模型(SEM)分析的系统流程

该流程图完整呈现了 AMOS 结构方程模型&#xff08;SEM&#xff09;分析的系统流程&#xff0c;具体步骤及内涵如下&#xff1a; 1. 模型设定 基于理论基础或研究假设&#xff0c;构建结构方程模型的初始框架&#xff0c;明确潜变量与显变量的关系、测量模型&#xff08;因子…

【GPT入门】第8课 大语言模型的自洽性

【GPT入门】第8课 大语言模型的自洽性 1.自洽性概念2.代码&#xff08;观察执行结果&#xff09;3.自洽性核心思想 1.自洽性概念 大模型的自洽性&#xff08;self - consistency&#xff09;是指在推理阶段&#xff0c;大模型通过生成多个答案并选择出现频率最高的那个&#x…

openwrt路由系统------lua、uci的关系

1. Luci 的核心组成 (1) Lua 简介:Luci 的界面和逻辑几乎完全使用 Lua 脚本语言编写。Lua 是一种轻量级、高效的嵌入式脚本语言,适合在资源受限的路由器环境中运行。作用: 生成动态 Web 页面(与后端交互渲染 HTML)。处理用户提交的表单数据(如修改 Wi-Fi 密码)。调用系…

在uni-app中使用SQLite实现离线下数据同步:从封装到实践

场景&#xff1a; 在移动应用开发中&#xff0c;确保应用在无网络连接时仍能正常运行并进行数据同步至关重要。 对于uni-app开发者而言&#xff0c;SQLite是理想的本地存储解决方案&#xff0c;支持结构化数据的存储和检索。本文将介绍如何在uni-app项目中使用SQLite实现离线…