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

news2024/11/25 20:20:02

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 main

import "fmt"

func main() {
    age := 20

    if age >= 18 {
        fmt.Println("You are an adult.")
    }
}

1.2 if-else 语句

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

package main

import "fmt"

func main() {
    age := 16

    if 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 main

import "fmt"

func main() {
    score := 85

    if 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 main

import "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 main

import "fmt"

func main() {
    day := 3

    switch 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 main

import "fmt"

func main() {
    num := -10

    switch {
    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 main

import "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 main

import "fmt"

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

2.2 省略初始化语句和后置语句的 for 循环

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

package main

import "fmt"

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

2.3 无限循环

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

package main

import "fmt"

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

2.4 使用 range 的 for 循环

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

package main

import "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 main

import "fmt"

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

3.2 continue 语句

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

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i%2 == 0 {
            continue
        }
        fmt.Println(i)
    }
}

3.3 goto 语句

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

package main

import "fmt"

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

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


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


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言简要(四)

有没有好心师傅教教孩子逆向和pwn啊꒰๑ꀾ๑꒱ 数组 <类型> 变量名称[元素数量]; int grades[100]; double weight[20]; 元素数量必须是整数 C99之前&#xff1a;元素数量必须是编译时刻确定的字面量 是一种容器&#xff0c;特点是&#xff1a; 其中所以的元素具有相同的…

debian nginx upsync consul 实现动态负载

1. consul 安装 wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [signed-by/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_r…

sh控制台输入文字多行 按“# ꧂ ꧁”结束

如果在Unix shell中输入多行文字&#xff0c;那么这样操作&#xff1a; 1. 打开您的终端&#xff08;Terminal&#xff09;。 2. 输入您的文字&#xff0c;每行文字后按回车键。 3. 当您完成输入所有文字后&#xff0c;输入“# ꧂ ꧁”然后按回车键&#xff0c;表示输入结束。…

人脸识别:基于卷积神经网络(CNN)分类思想的人脸识别系统

本文来自公众号 “AI大道理” —————— 项目配套视频课程&#xff1a; 平台&#xff1a;荔枝微课 链接&#xff1a;十方教育 项目地址&#xff1a;https://github.com/AIBigTruth/CNN_faces_recognition 之前很多人来询问这个项目怎么做&#xff0c;代码跑不起来&#…

Window GDI+ API有BUG?GetBounds测不准?

文章目录 GraphicsPath的GetBounds测不准&#xff1f;方法一&#xff1a;GetBounds ()实战 方法二&#xff1a;GetBounds(Matrix)实战 GraphicsPath的GetBounds测不准?实战 .NET 版本的问题&#xff1f;C也一样&#xff0c;不是.NET的问题怀疑人生MiterLimit惹得祸完美结果结束…

【Vue】Vue2中的Vuex

目录 Vuex介绍Vuex 中的核心概念 在vue2中使用Vuex安装 Vuex创建一个 Vuex Store在 Vue 实例中使用 Vuex编写 Vuex 的 state、mutations 和 actions在组件中使用 Vuex Vuex的核心State组件中获取 Vuex 的状态mapState 辅助函数对象展开运算符 Getter基本使用示例 通过属性访问通…

[协议]stm32读取AHT20程序示例

AHT20温度传感器使用程序&#xff1a; 使用i2c读取温度传感器数据很简单&#xff0c;但市面上有至少两个手册&#xff0c;我这个对应的手册贴出来&#xff1a; main: #include "stm32f10x.h" // Device header #include <stdint.h> #includ…

MQTT到串口的转发(node.js)

本文针对以下应用场景&#xff1a;已有通过串口通信的设备或软件&#xff0c;想要实现跨网的远程控制。 node.js安装 从 Node.js — Run JavaScript Everywhere下载LTS版本安装包&#xff0c;运行安装程序。&#xff08;傻瓜安装&#xff0c;按提示点击即可&#xff09; 设置环…

RabbitMQ - SimpleMessageListenerContainer的实现逻辑

RabbitMQ - SimpleMessageListenerContainer的实现逻辑 Queue&#xff08;队列&#xff09;&#xff1a;在 RabbitMQ 中用于存储消息的数据结构。生产者将消息发送到队列中&#xff0c;而消费者从队列中接收消息。 Connection&#xff08;连接&#xff09;&#xff1a;连接是应…

【代码随想录 二叉树】二叉树前序、中序、后序遍历的迭代遍历

文章目录 1. 二叉树前序遍历&#xff08;迭代法&#xff09;2. 二叉树后序遍历&#xff08;迭代法&#xff09;3. 二叉树中序遍历&#xff08;迭代法&#xff09; 1. 二叉树前序遍历&#xff08;迭代法&#xff09; 题目连接 &#x1f34e;因为处理顺序和访问顺序是一致的。所…

小程序开发的基本用法

一:基本组件 1.view和scroll-view view等同于div,view写在小程序显示和div一样的效果. srcoll-view scroll-x/scroll-y是div能移动的.但是小程序没有显示大的划的. 且scroll-view才能实现这个,要这个组件且要属性,内部基本结构才能实现. view没有属性实现. 2.swiper和swi…

【Centos7+JDK1.8】Jenkins安装手册

一、安装环境 Centos7 JDK1.8 Jenkins-2.346.3 JDK1.8安装以及网络配置等 自行搜索资料解决。 二、卸载历史安装的Jenkins&#xff0c;直接全部复制粘贴下面的命令 service jenkins stop yum -y remove jenkins rpm -e jenkins rpm -ql jenkins rm -rf /etc/sysconfig/je…

Vue从入门到实战Day12

一、Pinia快速入门 1. 什么是Pinia Pinia是Vue的最新状态管理工具&#xff0c;是Vuex的替代品 1. 提供更加简单的API&#xff08;去掉了mutation&#xff09; 2. 提供符合组合式风格的API&#xff08;和Vue3新语法统一&#xff09; 3. 去掉了modules的概念&#xff0c;每一…

【漏洞复现】懒人网址导航页 search.html SQL注入漏洞

0x01 产品简介 赖人网址导航系统是一种智能化的网址导航平台&#xff0c;旨在帮助用户快速找到所需的网址和资源。该系统提供了智能化的网址搜索和推荐功能&#xff0c;能够根据用户的搜索习惯和偏好推荐相关的网址和资源。同时&#xff0c;系统还提供了网址分类、网址收藏和网…

虚拟化技术[1]之服务器虚拟化

文章目录 虚拟化技术简介数据中心虚拟化 服务器虚拟化服务器虚拟化层次寄居虚拟化裸机虚拟化VMM无法直接捕获特权指令解决方案 服务器虚拟化底层实现CPU虚拟化内存虚拟化I/O设备虚拟化 虚拟机迁移虚拟机动态迁移迁移内容&#xff1a;内存迁移迁移内容&#xff1a;网络资源迁移迁…

二叉树实战演练

目录 1.二叉树前序遍历---leetcode 思路 画图解析&#xff1a; 2.相同的树的判断 思路&#xff1a; 3.对称二叉树 思路分析&#xff1a; 4.另一棵树的子树 思路&#xff1a; 5.二叉树的便利---牛客网 建立二叉树的逻辑图&#xff1a; 总结&#xff1a; 1.…

【嵌入式软件工程师面经】Socket,TCP,HTTP之间的区别

目录&#xff1a; 目录 目录&#xff1a; 一、Socket原理与TCP/IP协议 1.1 Socket概念&#xff1a; 1.2 建立Socket连接&#xff1a; 1.3 SOCKET连接与TCP/IP连接 二、HTTP连接&#xff1a; 2.1 HTTP原理 三、三者的区别和联系 前些天发现了一个巨牛的人工智能学习网站&#xf…

光伏电站在线监测智能诊断系统:开启无人值守新纪元

光伏电站在线监测智能诊断系统&#xff1a;开启无人值守新纪元 大家都知道光伏电站是通过汲取着太阳的光芒&#xff0c;为人类提供源源不断的电能源。然而&#xff0c;随着光伏电站规模的扩大和复杂性的增加&#xff0c;如何有效提高发电效率、减少人工维护成本&#xff0c;实…

力扣Hot100-73矩阵置零(标记数组)

给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]示例 2&#xff1a; 输入&…

3、md5比较绕过

青少年ctf&#xff1a;EasyMD5 1、页面是一个上传页面 2、上传两个txt文件&#xff0c;bp抓包 3、go发现提示要PDF文件 4、将文件类型改成PDF类 5、改文件类型提示MD5&#xff0c;也看出它是将文件里的内容读取比较 6、改成s878926199a和QNKCDZO 猜测后端源码&#xff1a; if…