Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go语言中的控制结构:条件语句和循环

Go语言中的控制结构:条件语句和循环

原创
作者头像
二一年冬末
发布于 2024-06-12 06:51:21
发布于 2024-06-12 06:51:21
2400
举报
文章被收录于专栏:活动活动

在编程中,控制结构是指引导程序如何执行的一系列指令。Go语言提供了多种控制结构来处理条件判断和循环操作。本文将详细介绍Go语言中的条件语句和循环结构,通过实例和代码解释,帮助读者全面理解和应用这些基本构造。


Ⅰ. 条件语句

1. if 语句

if语句是最基本的条件语句,根据布尔表达式的结果(true或false)来执行相应的代码块。

a. 基本语法
代码语言:go
AI代码解释
复制
if condition {
    // 当 condition 为 true 时执行的代码
}
b. 示例
代码语言:go
AI代码解释
复制
package main

import "fmt"

func main() {
    a := 10
    if a > 5 {
        fmt.Println("a is greater than 5")
    }
}

在这个示例中,如果变量a的值大于5,程序将输出a is greater than 5

2. if-else 语句

if-else语句在条件为false时执行另一个代码块。

a. 基本语法
代码语言:go
AI代码解释
复制
if condition {
    // 当 condition 为 true 时执行的代码
} else {
    // 当 condition 为 false 时执行的代码
}
b. 示例
代码语言:go
AI代码解释
复制
package main

import "fmt"

func main() {
    a := 3
    if a > 5 {
        fmt.Println("a is greater than 5")
    } else {
        fmt.Println("a is less than or equal to 5")
    }
}

在这个示例中,如果a大于5,程序将输出a is greater than 5,否则输出a is less than or equal to 5

3. if-else if-else 语句

if-else if-else语句用于处理多个条件分支。

a. 基本语法
代码语言:go
AI代码解释
复制
if condition1 {
    // 当 condition1 为 true 时执行的代码
} else if condition2 {
    // 当 condition2 为 true 时执行的代码
} else {
    // 当上述所有条件都为 false 时执行的代码
}
b. 示例
代码语言:go
AI代码解释
复制
package main

import "fmt"

func main() {
    a := 7
    if a > 10 {
        fmt.Println("a is greater than 10")
    } else if a > 5 {
        fmt.Println("a is greater than 5 but less than or equal to 10")
    } else {
        fmt.Println("a is 5 or less")
    }
}

在这个示例中,程序将检查多个条件并输出相应的结果。

4. 带初始化的 if 语句

Go语言的if语句允许在条件判断前执行一个简单的语句,通常用于变量的声明和赋值。

a. 基本语法
代码语言:go
AI代码解释
复制
if initialization; condition {
    // 当 condition 为 true 时执行的代码
}
b. 示例
代码语言:go
AI代码解释
复制
package main

import "fmt"

func main() {
    if a := 10; a > 5 {
        fmt.Println("a is greater than 5")
    }
}

在这个示例中,变量a在if语句内部声明并初始化。


Ⅱ. switch 语句

switch语句是一种多分支选择结构,适用于替代多个if-else if语句。

1. 基本语法

代码语言:go
AI代码解释
复制
switch expression {
case value1:
    // 当 expression == value1 时执行的代码
case value2:
    // 当 expression == value2 时执行的代码
default:
    // 当 expression 不等于上述所有值时执行的代码
}

2. 示例

代码语言:go
AI代码解释
复制
package main

import "fmt"

func main() {
    day := 3
    switch day {
    case 1:
        fmt.Println("Monday")
    case 2:
        fmt.Println("Tuesday")
    case 3:
        fmt.Println("Wednesday")
    default:
        fmt.Println("Other day")
    }
}

在这个示例中,根据变量day的值,程序输出相应的星期几。

3. 不带表达式的 switch 语句

Go语言的switch语句还可以省略表达式,直接在case语句中进行条件判断。

a. 基本语法
代码语言:go
AI代码解释
复制
switch {
case condition1:
    // 当 condition1 为 true 时执行的代码
case condition2:
    // 当 condition2 为 true 时执行的代码
default:
    // 当上述所有条件都为 false 时执行的代码
}
b. 示例
代码语言:go
AI代码解释
复制
package main

import "fmt"

func main() {
    a := 10
    switch {
    case a > 10:
        fmt.Println("a is greater than 10")
    case a > 5:
        fmt.Println("a is greater than 5 but less than or equal to 10")
    default:
        fmt.Println("a is 5 or less")
    }
}

在这个示例中,程序将根据条件判断来执行相应的代码块。

4. switch 语句中的 fallthrough

在Go语言中,使用fallthrough关键字可以使程序执行下一个case语句的代码。

a. 示例
代码语言:go
AI代码解释
复制
package main

import "fmt"

func main() {
    day := 2
    switch day {
    case 1:
        fmt.Println("Monday")
        fallthrough
    case 2:
        fmt.Println("Tuesday")
        fallthrough
    case 3:
        fmt.Println("Wednesday")
    default:
        fmt.Println("Other day")
    }
}

在这个示例中,程序将从匹配的case开始执行,并继续执行后续的case代码块,直到遇到下一个break或结束。


Ⅲ. 循环结构

1. for 语句

Go语言中唯一的循环结构是for语句,适用于各种循环场景。

2. 基本语法

a. 基本 for 循环
代码语言:go
AI代码解释
复制
for initialization; condition; post {
    // 循环体
}
b. 示例
代码语言:go
AI代码解释
复制
package main

import "fmt"

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

在这个示例中,程序将输出0到4的数字。

3. 省略初始化和后置语句

for循环的初始化语句和后置语句是可选的。

a. 示例
代码语言:go
AI代码解释
复制
package main

import "fmt"

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

在这个示例中,只有条件语句,没有初始化和后置语句。

4. 无限循环

省略所有三个部分会创建一个无限循环。

a. 示例
代码语言:go
AI代码解释
复制
package main

import "fmt"

func main() {
    i := 0
    for {
        if i >= 5 {
            break
        }
        fmt.Println(i)
        i++
    }
}

在这个示例中,循环通过条件判断和break语句来终止。

5. for-range 循环

for-range循环用于遍历数组、切片、映射和字符串。

a. 示例
代码语言:go
AI代码解释
复制
package main

import "fmt"

func main() {
    numbers := []int{1, 2, 3, 4, 5}
    for index, value := range numbers {
        fmt.Printf("Index: %d, Value: %d\n", index, value)
    }
}

在这个示例中,程序将遍历切片numbers并输出每个元素的索引和值。

6. 循环控制语句

Go语言提供了breakcontinuegoto语句来控制循环的执行流程。

a. break 语句

用于终止最内层的循环。

代码语言:go
AI代码解释
复制
package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        if i == 3 {
            break
        }
        fmt.Println(i)
    }
}

在这个示例中,当i等于3时,循环终止。

b. continue 语句

用于跳过当前循环的剩余代码,并开始下一次循环。

代码语言:go
AI代码解释
复制
package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        if i == 3 {
            continue
        }
        fmt.Println(i)
    }
}

在这个示例中,当i等于3时,跳过该次循环,继续下一次循环。

c. goto 语句

用于跳转到程序中的某个标签位置。

代码语言:go
AI代码解释
复制
package main

import "fmt"

func main() {
    i := 0
loop:
    fmt.Println(i)
    i++
    if i < 5 {
        goto loop
    }
}

在这个示例中,goto语句跳转到标签loop位置,实现了类似于循环的效果。


Ⅳ. 项目介绍与发展

为了展示Go语言中的控制结构在实际项目中的应用,我们将构建一个简单的控制结构项目,涵盖条件语句和循环的各种用法。

1. 项目结构

代码语言:go
AI代码解释
复制
control-structures/
├── main.go
├── conditions.go
└── loops.go

2. main.go

代码语言:go
AI代码解释
复制
package main

import "control-structures/utils"

func main() {
    utils.DemoConditions()
    utils.DemoLoops()
}

3. conditions.go

代码语言:go
AI代码解释
复制
package utils

import "fmt"

func DemoConditions() {
    // if 语句示例
    a := 10
    if a > 5 {
        fmt.Println("a is greater than 5")
    }

    // if-else 语句示例
    b := 3
    if b > 5 {
        fmt.Println("b is greater than 5")
    } else {
        fmt.Println("b is less than or equal to 5")
    }

    // if-else if-else 语句示例
    c := 7
    if c > 10 {
        fmt.Println("c is greater than 10")
    } else if c > 5 {
        fmt.Println("c is greater than 5 but less than or equal to 10")
    } else {
        fmt.Println("c is 5 or less")
    }

    // 带初始化的 if 语句示例
    if d := 10; d > 5 {
        fmt.Println("d is greater than 5")
    }

    // switch 语句示例
    day := 3
    switch day {
    case 1:
        fmt.Println("Monday")
    case 2:
        fmt.Println("Tuesday")
    case 3:
        fmt.Println("Wednesday")
    default:
        fmt.Println("Other day")
    }

    // 不带表达式的 switch 语句示例
    e := 10
    switch {
    case e > 10:
        fmt.Println("e is greater than 10")
    case e > 5:
        fmt.Println("e is greater than 5 but less than or equal to 10")
    default:
        fmt.Println("e is 5 or less")
    }

    // switch 语句中的 fallthrough 示例
    day = 2
    switch day {
    case 1:
        fmt.Println("Monday")
        fallthrough
    case 2:
        fmt.Println("Tuesday")
        fallthrough
    case 3:
        fmt.Println("Wednesday")
    default:
        fmt.Println("Other day")
    }
}

4. loops.go

代码语言:go
AI代码解释
复制
package utils

import "fmt"

func DemoLoops() {
    // 基本 for 循环示例
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }

    // 省略初始化和后置语句的 for 循环示例
    j := 0
    for j < 5 {
        fmt.Println(j)
        j++
    }

    // 无限循环示例
    k := 0
    for {
        if k >= 5 {
            break
        }
        fmt.Println(k)
        k++
    }

    // for-range 循环示例
    numbers := []int{1, 2, 3, 4, 5}
    for index, value := range numbers {
        fmt.Printf("Index: %d, Value: %d\n", index, value)
    }

    // break 语句示例
    for l := 0; l < 5; l++ {
        if l == 3 {
            break
        }
        fmt.Println(l)
    }

    // continue 语句示例
    for m := 0; m < 5; m++ {
        if m == 3 {
            continue
        }
        fmt.Println(m)
    }

    // goto 语句示例
    n := 0
loop:
    fmt.Println(n)
    n++
    if n < 5 {
        goto loop
    }
}

Go语言中的条件语句和循环结构,包括if语句、switch语句以及for循环的各种用法。

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
golang学习笔记8:控制结构
关键字 if 和 else 之后的左大括号 { 必须和关键字在同一行,如果你使用了 else-if 结构,则前段代码块的右大括号 } 必须和 else-if 关键字在同一行。这两条规则都是被编译器强制规定的。
JKXQJ
2018/11/06
5280
100天精通Golang(基础入门篇)——第8天:Go语言程序的流程结构和条件语句
本文是《100天精通Golang(基础入门篇)》系列的第8天,介绍了Golang中程序的流程结构和条件语句。通过学习程序的流程结构,包括顺序结构、分支结构和循环结构,以及条件语句如if语句和switch语句,读者可以进一步掌握Golang的基础知识和语法。
猫头虎
2024/04/08
2250
100天精通Golang(基础入门篇)——第8天:Go语言程序的流程结构和条件语句
Go语言流程控制
程序设计语言的流程控制语句用于设定计算执行的次序,建立程序的逻辑结构。流程控制语句主要有三个作用:
hotarugali
2022/03/01
3050
Go通关03:控制结构,if、for、switch逻辑语句
您诸位好啊,我是无尘,今天学习下go语言的控制结构: if 条件语句 func main() { i:=6 if i >10 { fmt.Println("i>10") } else if i>5 && i<=10 { fmt.Println("5<i<=10") } else { fmt.Println("i<=5") } } 注意: if 后的表达无 ‘( )’ 每个条件分支中的 ‘{ }’ 是必须的。哪怕只
微客鸟窝
2021/08/18
3960
Go流程控制
if - else语句,与其他语言相似,需要注意的是,go编译器需要else if、else两侧的}``{需要保持在同一行
用户9022575
2021/10/01
3040
GO语言基础之条件语句switch
switch 是一个条件语句,用于将表达式的值与可能匹配的选项列表进行比较,并根据匹配情况执行相应的代码块。它可以被认为是替代多个if else子句的常用方式。
墨紫羽墨
2022/01/03
4440
[GO专栏-6]Go语言流程控制
流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑。
苏州程序大白
2022/04/13
3360
Go 专栏|流程控制,一网打尽
最近看奥运会看的我热血沸腾,中国奥运健儿简直太棒了,不只是成绩,还有气质,精气神,全方位的棒。
AlwaysBeta
2021/09/07
3160
Go 专栏|流程控制,一网打尽
11.Go语言-流程控制
所谓流程控制就是指“程序怎么执行”或者说“程序执行的顺序”。程序整体上确实是从上往下执行,但又不单纯是从上往下。
面向加薪学习
2022/09/04
6240
Go-控制流语句-switch(一)
Go 语言中的 switch 控制流语句用于根据一个表达式的值,从多个可能的选项中选择一个执行。它的基本语法如下:
堕落飞鸟
2023/04/20
3240
Go语言学习系列——条件语句:if-else、switch——【坚果派-红目香薰】
if-else: 1. 条件表达式不需要括号 2. 大括号必须有,且必须在同一行 3. 支持初始化语句 4. 条件必须是布尔值 switch: 1. 不需要break语句 2. 支持多条件匹配 3. 支持无条件表达式的形式 4. fallthrough关键字用于继续执行下一个case 5. case后可以是表达式 6. default可选,位置灵活
红目香薰
2025/03/13
1640
Go语言学习系列——条件语句:if-else、switch——【坚果派-红目香薰】
学习go语言编程之流程控制
i = 0,输出:0 i = 1,输出:1 i = 2,输出:3 i = 3,输出:3 i = 4,输出:4, 5, 6 i = 5,输出:4, 5, 6 i = 6,输出:4, 5, 6 i = 其他值,输出:default
编程随笔
2023/10/15
1850
Golang语言社区--Go语言基础第五节流程控制
大家好,我是Golang语言社区(www.Golang.LTD)主编彬哥,今天给大家带来的是关于go语言中的流程控制。
李海彬
2018/03/08
8220
Golang语言社区--Go语言基础第五节流程控制
Go语言学习(五)| 控制结构
Go 对于值之间的比较有非常严格的限制,只有两个类型相同的值才可以进行比较,如果值的类型是接口,它们也必须都实现了相同的接口
Mervyn
2020/07/21
7460
浅谈Go语言中如何进行流程控制
注意:Go语言规定与if匹配的左括号{必须与if和表达式放在同一行,{放在其他位置会触发编译错误。同理,与else匹配的{也必须与else写在同一行,else也必须与上一个if或else if右边的大括号在同一行。
极客运维圈
2020/04/07
3750
005.golang 控制语句
判断语句if 条件表达式没有括号 支持一个初始化表达式(可以是并行方式) 左大括号必须和条件语句或else在同一行 支持单行模式 初始化语句中的变量为block级别,同时隐藏外部同名变量 package main import ( "fmt" ) func main() { a := 10 b := 20 //条件表达式没有括号 //支持一个初始化表达式(可以是并行方式) if a, b := 1, 2; a > 0 { //左大括号必须和条件语句或el
qubianzhong
2018/08/02
3340
005.golang 控制语句
Golang语言中的流程控制结构和函数详解
流程控制 流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑。Go中流程控制分三大类:条件判断,循环控制和无条件跳转。 if if也许是各种编程语言中最常见的了,它的语法概括起来就是:如果满足条件就做某事,否则做另一件事。 Go里面if条件判断语句中不需要括号,如下代码所示: 代码如下: if x > 10 { fmt.Println("x is greater than 10") } else { fmt.Println("x is less
李海彬
2018/03/21
9420
Golang语言中的流程控制结构和函数详解
Go语言条件语句
Go语言的条件语句在概念和流程上与其他编程语言完全相同,因此这里不再赘述,写法上结合了Python和C++,即条件表达式不需要加括号,但仍然保留了花括号。具体例子见下:
Steve Wang
2020/12/22
6360
【GO语言卵细胞级别教程】03.条件与循环语句
注意,其中fallthrough 表示无条件执行下一个case,也就是无论下一条语句执行的是true还是false都会执行。 2. 实战:switch 后面跟变量
读懂原理
2024/02/09
1680
Go语言关键字解析:深入了解Go语言中的关键字
为了更加深入地介绍Go语言以及与C#语言的比较,本文将会从多个维度出发进行详细的阐述。首先,将从Go语言的关键字方面介绍Go与C#在语言特性上的异同,并且探讨两种语言在关键字方面的优化和不足之处。其次,本文将通过代码示例展示展示Go语言与C#之间关键字的不同。除此之外,为了更好地帮助读者理解Go语言,本文还将介绍一些优秀的Go语言工具和社区资源,供读者进一步学习和探索。相信通过这些内容的全面介绍,读者们会对Go语言有更全面深入的认识和了解。
葡萄城控件
2023/10/11
4000
Go语言关键字解析:深入了解Go语言中的关键字
相关推荐
golang学习笔记8:控制结构
更多 >
LV.7
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档