首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go语言中的控制结构:条件语句和循环

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

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

在编程中,控制结构是指引导程序如何执行的一系列指令。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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
python干货——函数
👨‍🎓作者:Java学术趴 🏦仓库:Github、Gitee ✏️博客:CSDN、掘金、InfoQ、云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。 👋大家好!我是你们的老朋友Java学术趴。任何的语言都离不开函数,都包括内置函数和自定义函数,函数的作用就是对功能进行封装以便于无效调用。 9.1 函数的基础 函数就是一段含有特殊功能的代码块 使用函数完成
Java学术趴
2022/06/03
7530
python干货——函数
python3--函数进阶
TypeError: func() missing 4 required keyword-only arguments: 'a', 'b', 'c', and 'd'
py3study
2018/08/02
5310
Python 变量作用域与函数
一个程序的所有的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的,变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称,两种最基本的变量作用域,第一种是局部变量,第二种是全局变量.定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域,而局部变量只能在其被声明的函数内部访问,全局变量则可以在整个程序范围内访问.
王 瑞
2022/12/28
2.6K0
5.0 Python 定义并使用函数
函数是python程序中的基本模块化单位,它是一段可重用的代码,可以被多次调用执行。函数接受一些输入参数,并且在执行时可能会产生一些输出结果。函数定义了一个功能的封装,使得代码能够模块化和组织结构化,更容易理解和维护。在python中,函数可以返回一个值或者不返回任何值,而且函数的参数可以是任何python对象,包括数字、字符串、列表、元组等。python内置了许多函数,同时也支持用户自定义函数。
王 瑞
2023/08/13
4020
Python函数用法
python中函数的参数有位置参数、默认参数、可变参数、命名关键字参数和关键字参数,这个顺序也是定 义函数时的必须顺序。
星陨1357
2023/03/14
4630
Python学习记录day3
2)list(),原理是调用__init__,内部执行for循环将元素添加到list中。
py3study
2020/01/03
3990
python基础3
 交换: a,b=b,a 相当于定义了一个元组t=(b,a) 然后将t[0]的值给了a,t[1]的值给了b ####字典#### 定义用花括号 集合定义若为空的话,会默认为字典,所以集合不能为空 子典只能通过关键字来查找值,因为字典是key-value(关键字-值),因此不能通过值来查找关键字 In [1]: dic = {"user1":"123","user2":"234","user3":"789"} In [3]: dic["234"] --------------------------------------------------------------------------- KeyError                                  Traceback (most recent call last) <ipython-input-3-2845b64d96b1> in <module>() ----> 1 dic["234"] KeyError: '234' 字典是一个无序的数据类型,因此也不能进行索引和切片等操作。 In [1]: dic = {"user1":"123","user2":"234","user3":"789"} In [2]: dic["user1"] Out[2]: '123' In [5]: dic["user2"] Out[5]: '234' In [7]: user = ['user1','user2','user3'] In [8]: passwd = ['123','234','456'] In [9]: zip(user,passwd) Out[9]: [('user1', '123'), ('user2', '234'), ('user3', '456')] In [10]: 当你有一个用户名单和密码,若使用列表的类型,判断用户是否和密码一致时,就比较麻烦,而使用字典时,只需通过关键子就可以返回相对应的值,(如上例子:当定义一个子典当你搜索user1时,字典类型就会返回该关键字对应的密码,此时只需判断该密码是否匹配即可) ####字典的基本操作### In [17]: dic. dic.clear       dic.items       dic.pop         dic.viewitems dic.copy        dic.iteritems   dic.popitem     dic.viewkeys dic.fromkeys    dic.iterkeys    dic.setdefault  dic.viewvalues dic.get         dic.itervalues  dic.update       dic.has_key     dic.keys        dic.values 字典添加 In [12]: dic Out[12]: {'user1': '123', 'user2': '234', 'user3': '789'} In [13]: dic["westos"]='linux' In [14]: dic Out[14]: {'user1': '123', 'user2': '234', 'user3': '789', 'westos': 'linux'} In [15]: dic["hello"]='world' In [16]: dic            ####由此可以看出字典是无序的,在添加时,并不会按照顺序往后添加#### Out[16]: {'hello': 'world',  'user1': '123',  'user2': '234',  'user3': '789',  'westos': 'linux'} In [17]: 字典更新 In [22]: dic Out[22]: {'hello': 'world', 'user1': '123', 'user2': '234', 'user3': '789'} In [23]: dic["user1"]="redhat"        ###可直接通过赋值对关键字进行更新### In [24]: dic Out[24]: {'hello': 'world', 'user1': 'redhat', 'user2': '234', 'user3': '789'} ###或者通过dic.update更新### In [25]: dic Out[25]: {'hello': 'world', 'user1': 'redhat', 'user2': '234', 'user3': '789'} In [26]: help(di
py3study
2020/01/03
4990
Python编程 函数的定义与参数
函数 只有在调用时才会执行,通过 function_name(param) 进行调用
网络豆
2023/10/15
2590
Python编程 函数的定义与参数
【愚公系列】2021年12月 Python教学课程 12-Python函数
函数(function)是用于完成特定任务的程序代码的自包含单元。在面向对象编程的类中,函数通常被称作方法。不同的函数在程序中扮演着不同的角色,起着不同的作用,执行不同的动作。比如 print()函数可以将对象打印到屏幕上;还有一些函数能够返回一个值以供程序使用,比如 len()将可计算长度的对象的元素个数返回给程序。
愚公搬代码
2021/12/14
5770
python第十四课--排序及自定义函数之自定义函数(案例五)
演示函数的定义和使用细节: 默认参数: #在设计自定义函数的时候,就存在一个默认值,就算在调用的时候不显示的传入实参,也不会报错。 #会用默认值来代替参与后期的运算
hankleo
2020/09/16
4020
[Python零基础入门篇③⓪] - 函数的定义与使用
什么是函数? --- > 函数是具有某种特定功能的代码块,可以重复使用(在前面数据类型相关章节,其实已经出现了很多 Python 内置函数了)。它使得我们的程序更加模块化,不需要编写大量重复的代码。
哈哥撩编程
2024/07/10
3080
[Python零基础入门篇③⓪] - 函数的定义与使用
006从零开始学Python—自定义函数
虽然Python的标准库中自带了很多“方法”或函数,并且第三方模块也提供了更多的现成"方法"与函数,但有时还是不能满足需求,这时就需要自定义函数了。另外,为了避免重复编写代码并使代码简洁易读,可以将常用的代码块封装为函数,在需要时调用函数即可。
1480
2019/05/22
8330
Python中函数的介绍
函数名:函数名是函数的标识符,用于唯一标识函数。在定义函数时,需要给函数一个名字,以便后续调用和引用。函数名应遵循命名规则,例如以字母或下划线开头,由字母、数字或下划线组成。命名规范可参考官网的PEP 8风格,地址如下:
小博测试成长之路
2023/09/01
4380
Python中函数的介绍
python函数基础学习
按关键字传值接收多个关键字参数,由 kwargs 接收,保存为一个字典(dict)的形式
Mirror王宇阳
2020/11/13
5850
python函数基础学习
Python基础知识点梳理
摘要: 本文主要介绍一些平时经常会用到的python基础知识点,用于加深印象,也算是对于学习这门语言的一个总结与回顾。python的详细语法介绍可以查看官方编程手册,也有一些在线网站对python语法进行了比较全面的介绍,比如菜鸟教程: python3 教程|菜鸟教程 为了方便聚焦知识点,本文涉及的操作实例并不多,想学好一门语言关键还得自己多编码多实践。
全栈程序员站长
2022/09/12
1.2K0
Python3 系列之 可变参数和关键字
对于可变参数可以联想到 C# 中的可变参数。可变参数是一个数量不确定的列表集合,可以是 list 类型,也可以是 tuple 类型 我们定义如下代码段:
py3study
2020/01/19
5510
Python的基础知识
布尔值也叫做布尔类型,总共有两个值,一个为True(真),一个为False(假),一般被用于逻辑判断
星陨1357
2023/03/14
7510
Python的基础知识
面试题集锦(一)
# 一、选择题(32分) # 1、python不支持的数据类型有(A) # A、char # B、int # C、float # D、list # 2.下列执行的结果是(E) # x = ‘foo’ x为字符串类型 # y = 2 y是int类型 # print(x+y) 不同类型的数据不可以相加 # A. foo B. foofoo C. foo2 D. 2 E.An exception is thrown
全栈程序员站长
2022/07/21
3100
【无痛学Python】基础语法3
在函数定义的时候, 可以在 ( ) 中指定 “形式参数” (简称 形参), 然后在调用的时候, 由调用者把 “实际参数” (简称 实参) 传递进去.
Skrrapper
2025/06/08
510
【无痛学Python】基础语法3
python第十四课--排序及自定义函数
1.排序 特点: 1).升序:从小到大 2).降序:从大到小 课堂实现选择排序:参看老郭选择排序.py文件 2.函数:(方法/method) 自定义函数: 概念:它表示一段作用范围(作用域),当中封装了一段业务逻辑代码,此范围有名字, 我们需要调用函数名,才能去执行它; 好处: 1).代码的复用性变强 2).代码的扩展性和维护性变好 3).代码的阅读性变好 函数有五要素: ①.函数修饰符:必须都是def开头 ②.函数返回值:函数执行完毕可能存在有返回值/没有返回值两种情况 ③.函数名:标识符(规则和规范),自己定义函数的名字 ④.形参列表定义在函数名后的小括号内,可以没有也可以定义多个 ⑤.函数体封装的功能代码 格式: ① ③(④): ⑤ ② 函数的内存执行过程: 栈: 特点:分为栈顶部分和栈底部分,满足先进后出,只运行栈顶的内容; 函数method一旦被执行了,先进栈(入栈) --> 在栈顶开辟空间执行, 如果执行到一半调用了别的函数method02,那么method就被压栈了(顶->底), method02在开辟空间执行,等到method02执行完毕了,它就被弹栈(出栈)了, 然后method01获取了执行权,它会先升栈(底->顶),到method执行完毕了,它就被弹栈(出栈)了 【注意事项】: 1).形式参数也称形参,实际参数也称实参 2).形式参数出现在定义函数的时候,没有具体的内容,只是开了个口 3).实际参数出现在函数调用的时候,将实际参数给到形式参数 --> 称为参数传递, 之后参与运算的全部都是实参而已 4).return关键字有两层含义: ①.表示函数的结束②.将结果返回给函数的调用者/调用处 5).python中没有函数重载的现象: 什么是函数重载? 在同一个作用范围内定义相同名字的函数,但是形参不同(个位、位置), 在调用函数的时候,通过传入的参数的不同,能得知到底需要执行哪一个函数 python中如果在相同的作用域中定义多个重名的函数, 最后的一个函数,会将之前所有的同名函数全部覆盖, 所以只能调用最后一个同名函数执行 6).与return同一作用范围内的后面不要显示的书写任何代码,因为永远不可能被执行到,不会报错 7).return后面也可以不定义任何有效的数据,但是这样会将None值返回给调用处,一般没有什么意义 4中最常见的自定义函数模型 1).无参无返回值 2).无参有返回值 3).有参无返回值 4).有参有返回值 参数的定义和使用细节: 分类: 1).默认参数: #在设计自定义函数的时候,就存在一个默认值,就算在调用的时候不显示的传入实参,也不会报错 #会用默认值来代替参与后期的运算
hankleo
2020/09/16
4280
相关推荐
python干货——函数
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • Ⅰ. 条件语句
    • 1. if 语句
      • a. 基本语法
      • b. 示例
    • 2. if-else 语句
      • a. 基本语法
      • b. 示例
    • 3. if-else if-else 语句
      • a. 基本语法
      • b. 示例
    • 4. 带初始化的 if 语句
      • a. 基本语法
      • b. 示例
  • Ⅱ. switch 语句
    • 1. 基本语法
    • 2. 示例
    • 3. 不带表达式的 switch 语句
      • a. 基本语法
      • b. 示例
    • 4. switch 语句中的 fallthrough
      • a. 示例
  • Ⅲ. 循环结构
    • 1. for 语句
    • 2. 基本语法
      • a. 基本 for 循环
      • b. 示例
    • 3. 省略初始化和后置语句
      • a. 示例
    • 4. 无限循环
      • a. 示例
    • 5. for-range 循环
      • a. 示例
    • 6. 循环控制语句
      • a. break 语句
      • b. continue 语句
      • c. goto 语句
  • Ⅳ. 项目介绍与发展
    • 1. 项目结构
    • 2. main.go
    • 3. conditions.go
    • 4. loops.go
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档