首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
本小册内容介绍
本小册内容综述
Go语言简介:历史背景、发展现状及语言特性
编写第一个Go程序
变量、常量以及与其他语言的差异
数据类型
运算符
条件和循环
数组和切片
Map声明、元素访问及遍历
Map与工厂模式,在Go语言中实现Set
字符串
Go语言的函数
可变参数和defer
行为的定义和实现
Go语言的相关接口
扩展与复用
不一样的接口类型,一样的多态
编写好的错误处理
panic和recover
构建可复用的模块(包)
依赖管理
协程机制
共享内存并发机制
CSP并发机制
多路选择和超时
channel的关闭和广播
任务的取消
Context与任务取消
只运行一次
仅需任意任务完成
所有任务完成
对象池
sync.pool对象缓存
单元测试
Benchmark
BDD
反射编程
万能程序
不安全编程
实现pipe-filter framework
实现micro-kernel framework
内置JSON解析
easyjson
HTTP服务
构建RESTful服务
性能分析工具
性能调优示例
别让性能被锁住
GC友好的代码
高效字符串连接
面向错误的设计
面向恢复的设计
Chaos Engineering
当前位置:
首页>>
技术小册>>
Go语言从入门到实战
小册名称:Go语言从入门到实战
### 条件和循环:Go语言中的控制流基石 在编程的世界里,控制流是构建程序逻辑的核心。它决定了程序如何根据不同的条件执行不同的代码块,以及如何通过重复执行某些操作来处理数据集合。在Go语言中,条件和循环是实现控制流的两大基本机制。本章将深入探讨Go语言中的条件语句(if、switch)和循环语句(for、range),并通过实例展示它们在实际编程中的应用。 #### 一、条件语句 条件语句允许程序根据一个或多个条件来执行不同的代码块。Go语言提供了`if`和`switch`两种主要的条件语句。 ##### 1.1 if语句 `if`语句是最基本的条件语句,用于根据一个或多个条件执行不同的代码块。Go语言的`if`语句结构清晰,易于理解。 ```go if 条件表达式 { // 条件为真时执行的代码块 } else if 另一个条件表达式 { // 第一个条件为假且这个条件为真时执行的代码块 } else { // 所有条件都为假时执行的代码块(可选) } ``` **示例**:判断一个数是否为正数、负数或零。 ```go package main import "fmt" func main() { var num int = -5 if num > 0 { fmt.Println("正数") } else if num < 0 { fmt.Println("负数") } else { fmt.Println("零") } } ``` ##### 1.2 switch语句 `switch`语句是另一种条件语句,它提供了一种更灵活的方式来处理多个条件分支。在Go中,`switch`不仅限于等值比较,还可以利用`case`后面的表达式进行更复杂的条件判断。 ```go switch 表达式 { case 值1: // 当表达式等于值1时执行的代码块 case 值2, 值3: // 当表达式等于值2或值3时执行的代码块(可并列多个值) default: // 所有case都不满足时执行的代码块(可选) } ``` Go的`switch`语句还支持不带表达式的形式,此时它类似于多个`if-else if-else`的集合,但更加简洁。 **示例**:根据星期几打印不同的问候语。 ```go package main import ( "fmt" "time" ) func main() { now := time.Now().Weekday() switch now { case time.Monday: fmt.Println("周一了,又是奋斗的一周!") case time.Friday: fmt.Println("周五了,周末还会远吗?") case time.Saturday, time.Sunday: fmt.Println("周末愉快!") default: fmt.Println("工作日,加油!") } } ``` #### 二、循环语句 循环语句允许程序重复执行一段代码,直到满足特定的条件为止。Go语言提供了`for`和`range`两种循环语句。 ##### 2.1 for语句 `for`语句是Go中最通用的循环语句,它支持多种形式的循环控制。 - **传统形式**:类似于C/C++中的`for`循环。 ```go for 初始化语句; 条件表达式; 迭代语句 { // 循环体 } ``` - **无限循环**:省略条件表达式。 ```go for { // 循环体 } ``` - **条件循环**:仅包含条件表达式,类似于`while`循环。 ```go for 条件表达式 { // 循环体 } ``` **示例**:使用`for`循环计算1到10的和。 ```go package main import "fmt" func main() { sum := 0 for i := 1; i <= 10; i++ { sum += i } fmt.Println("1到10的和是:", sum) } ``` ##### 2.2 range语句 `range`语句是Go语言特有的,用于遍历数组、切片、字符串、映射(map)或通道(channel)的元素。对于数组、切片和字符串,`range`会返回元素的索引和值;对于映射,则返回键和值;对于通道,则返回通道中发送的值(在没有显式指定第二个返回值时)。 **示例**:遍历切片并打印每个元素的值。 ```go package main import "fmt" func main() { numbers := []int{2, 3, 4, 5, 6} for index, value := range numbers { fmt.Printf("索引:%d,值:%d\n", index, value) } } ``` #### 三、控制循环的语句 在循环内部,我们可能需要提前退出循环或跳过某些迭代。Go语言提供了`break`和`continue`语句来实现这些功能。 - **break**:用于立即退出当前循环(`for`、`switch`或`select`)。如果`break`语句包含标签,它将退出标签指定的外层循环。 - **continue**:用于跳过当前循环的剩余部分,直接开始下一次迭代。如果`continue`语句包含标签,它将跳过标签指定的外层循环的当前迭代。 **示例**:使用`break`和`continue`控制循环。 ```go package main import "fmt" func main() { for i := 0; i < 10; i++ { if i%2 == 0 { continue // 跳过偶数 } if i == 7 { break // 当i等于7时退出循环 } fmt.Println(i) } } ``` #### 四、总结 条件和循环是编程中不可或缺的控制流机制。Go语言通过`if`、`switch`、`for`和`range`等语句提供了强大而灵活的控制流表达能力。掌握这些语句的使用,能够帮助我们编写出结构清晰、逻辑严密的程序。在实际编程中,我们应根据具体需求选择合适的条件语句和循环语句,并合理运用`break`和`continue`等控制语句来优化循环逻辑,提高程序的效率和可读性。
上一篇:
运算符
下一篇:
数组和切片
该分类下的相关小册推荐:
GO面试指南
Go语言入门实战经典
Go开发基础入门
WebRTC音视频开发实战
深入浅出Go语言核心编程(四)
Go-Web编程实战
Go 组件设计与实现
深入浅出Go语言核心编程(五)
go编程权威指南(四)
深入浅出Go语言核心编程(八)
深入浅出Go语言核心编程(一)
Go开发权威指南(下)