Go语言之控制结构

news2024/11/16 17:51:30

个人网站:

http://hardyfish.top/

免费书籍分享:

资料链接:https://url81.ctfile.com/d/57345181-61545511-81795b?p=3899

访问密码:3899

在这里插入图片描述

免费专栏分享:

资料链接:https://url81.ctfile.com/d/57345181-61616236-5d1496?p=3899

访问密码:3899

if条件语句

if 语句是条件语句,它根据布尔值的表达式来决定选择哪个分支执行:

如果表达式的值为 true,则 if 分支被执行;如果表达式的值为 false,则 else 分支被执行。

func main() {

    i:=10

    if i >10 {

        fmt.Println("i>10")

    } else {

        fmt.Println("i<=10")

    }

}

关于 if 条件语句的使用有一些规则:

  1. if 后面的条件表达式不需要使用 (),这和有些编程语言不一样,也更体现 Go 语言的简洁;
  2. 每个条件分支(if 或者 else)中的大括号是必须的,哪怕大括号里只有一行代码(如示例);
  3. if 紧跟的大括号 { 不能独占一行,else 前的大括号 } 也不能独占一行,否则会编译不通过;
  4. 在 if……else 条件语句中还可以增加多个 else 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")

    }

}

和其他编程语言不同,在 Go 语言的 if 语句中,可以有一个简单的表达式语句,并将该语句和条件语句使用分号 ; 分开。

func main() {

    if i:=6; i >10 {

        fmt.Println("i>10")

    } else if  i>5 && i<=10 {

        fmt.Println("5<i<=10")

    } else {

        fmt.Println("i<=5")

    }

}

在 if 关键字之后,i>10 条件语句之前,通过分号 ; 分隔被初始化的 i:=6。

这个简单语句主要用来在 if 条件判断之前做一些初始化工作,可以发现输出结果是一样的。

switch选择语句

switch i:=6;{

case i>10:

    fmt.Println("i>10")

case i>5 && i<=10:

    fmt.Println("5<i<=10")

default:

    fmt.Println("i<=5")

}

switch 语句同样也可以用一个简单的语句来做初始化,同样也是用分号 ; 分隔。

每一个 case 就是一个分支,分支条件为 true 该分支才会执行,而且 case 分支后的条件表达式也不用小括号 () 包裹。

在 Go 语言中,switch 的 case 从上到下逐一进行判断,一旦满足条件,立即执行对应的分支并返回,其余分支不再做判断。

也就是说 Go 语言的 switch 在默认情况下,case 最后自带 break。

这和其他编程语言不一样,比如 C 语言在 case 分支里必须要有明确的 break 才能退出一个 case。

Go 语言的这种设计就是为了防止忘记写 break 时,下一个 case 被执行。

那么如果你真的有需要,的确需要执行下一个紧跟的 case 怎么办呢?

Go 语言也考虑到了,提供了 fallthrough 关键字。现在看个例子,如下面的代码所示:

switch j:=1;j {

case 1:

    fallthrough

case 2:

    fmt.Println("1")

default:

    fmt.Println("没有匹配")

}

以上示例运行会输出 1,如果省略 case 1: 后面的 fallthrough,则不会有任何输出。

当 switch 之后有表达式时,case 后的值就要和这个表达式的结果类型相同,比如这里的 j 是 int 类型,那么 case 后就只能使用 int 类型,如示例中的 case 1、case 2。

如果是其他类型,比如使用 case “a” ,会提示类型不匹配,无法编译通过。

而对于 switch 后省略表达式的情况,整个 switch 结构就和 if……else 条件语句等同了。

switch 后的表达式也没有太多限制,是一个合法的表达式即可,也不用一定要求是常量或者整数。

你甚至可以像如下代码一样,直接把比较表达式放在 switch 之后:

switch 2>1 {

case true:

    fmt.Println("2>1")

case false:

    fmt.Println("2<=1")

}

for循环语句

sum:=0

for i:=1;i<=100;i++ {

    sum+=i

}

fmt.Println("the sum is",sum)

其中:

  1. 第一部分是一个简单语句,一般用于 for 循环的初始化,比如这里声明了一个变量,并对 i:=1 初始化;
  2. 第二部分是 for 循环的条件,也就是说,它表示 for 循环什么时候结束。这里的条件是 i<=100;
  3. 第三部分是更新语句,一般用于更新循环的变量,比如这里 i++,这样才能达到递增循环的目的。
sum:=0

i:=1

for i<=100 {

    sum+=i

    i++

}

fmt.Println("the sum is",sum)

这个示例和上面的 for 示例的效果是一样的,但是这里的 for 后只有 i<=100 这一个条件语句,也就是说,它达到了 while 的效果。

在 Go 语言中,同样支持使用 continue、break 控制 for 循环:

  1. continue 可以跳出本次循环,继续执行下一个循环。
  2. break 可以跳出整个 for 循环,哪怕 for 循环没有执行完,也会强制终止。
sum:=0

i:=1

for {

    sum+=i

    i++

    if i>100 {

        break

    }

}

fmt.Println("the sum is",sum)

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

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

相关文章

HarmonyOS Next开发学习手册——通过startAbilityByType拉起垂类应用

使用场景 开发者可通过特定的业务类型如导航、金融等&#xff0c;调用startAbilityByType接口拉起对应的垂域面板&#xff0c;该面板将展示目标方接入的垂域应用&#xff0c;由用户选择打开指定应用以实现相应的垂类意图。垂域面板为调用方提供统一的安全、可信的目标方应用&a…

Qt-Advanced-Docking-System示例程序

写了一些简单的示例程序&#xff0c;帮助我更好地使用和了解Qt-Advanced-Docking-System 1.写一个如图页面布局的程序 m_pDockMangernew ads::CDockManager(this);this->setCentralWidget(m_pDockManger);ads::CDockWidget* centerDockWidgetnew ads::CDockWidget("中…

MinIO下载和安装(Windows)

1、MinIO下载和安装 | 用于创建高性能对象存储的代码和下载内容 2、在本地硬盘中并新建一个minio文件夹 里面再创建bin文件夹和data文件夹 bin 用于存放下载的minio.exe data 用于存放数据 logs 用于存放日志 3、 编写启动脚本start.bat echo off echo [信息] 运行MinIO文服务…

探索新质生产力,Coremail邮件新品系列重磅发布!

数字化发展至今&#xff0c;新一轮科技革命与产业变革加速推进&#xff0c;利用新质生产力成为企业发展的关键&#xff0c;而邮箱作为日常工作的重要软件应用&#xff0c;如何紧追时代风口助力行业革新&#xff1f; 6月20日&#xff0c;探索新质生产力&#xff1a;Coremail智能…

自动化IC封装模拟分析工作流程

在IC封装制程的制程模拟中&#xff0c;为了同时提升工作效率与质量&#xff0c;CAE团队常会面临到许多挑战。在一般的CAE分析流程中&#xff0c;仿真分析产生结构性网格&#xff0c;是非常繁琐且相当花时间的。必须要先汇入2D (或3D) 图档&#xff0c;接着陆续建立表面网格、高…

华为升腾显卡选型备忘

目录 1. 开发套件 2. 加速模块 3. 加速卡 4. 训练卡 官方地址&#xff1a;https://www.hiascend.com/ 备注&#xff1a; &#xff08;1&#xff09;V后缀的都是Video视频解析卡&#xff0c;本质是推理卡&#xff1b; &#xff08;2&#xff09;I后缀的都是推理卡&#…

Ubuntu server 22.04 (Linux) 安装部署 redis 7.4 详细步骤 Tab 不能自动补全

1 安装依赖软件 sudo apt update sudo apt-get install tcl-dev 2 下载 wget https://download.redis.io/releases/redis-7.4-rc1.tar.gz 3 编译安装 #解压 tar zxvf redis-7.4-rc1.tar.gz # cd redis-7.4-rc1/ #编译 make make test #安装 sudo make install PREFIX/usr…

防爆气象站的工作原理

TH-FBCQX2防爆气象监测设备是为了在存在爆炸性气体或粉尘的潜在危险环境中进行气象监测而专门设计的设备。以下是对防爆气象监测设备的详细介绍&#xff1a; 防爆气象监测设备符合防爆安全标准&#xff0c;确保在易燃易爆环境中不会产生火花或热源&#xff0c;从而避免引发爆炸…

IDEA2024关闭自动AI代码补全功能

文章目录 一、背景二、教程四、写在后面 一、背景 在本人前段时间的一次面试算法题中&#xff0c;面试官让我关闭代码提示功能&#xff0c;当时气氛尴尬的可以抠出三室一厅&#xff0c;但是这个功能是2024新版参考文献自带的&#xff0c;本次来分享如何关闭新版代码补全功能。…

Model3C芯片方案--86彩屏中控面板Modbus协议说明

一、概述 Model3C芯片是一款基于RISC-V的高性能、国产自主、工业级高清显示与智能控制MCU&#xff0c;配备强大的2D图形加速处理器、PNG/JPEG解码引擎&#xff0c;并支持工业宽温。基于Model3C芯片的86彩屏中控面板&#xff0c;通过集成Modbus协议&#xff0c;实现了与多种控制…

一键登录功能实现(采用极光SDK)

前端流程 1. 引入极光认证 SDK&#xff1a; 通过 <script> 标签引入 &#xff0c;在 public/index.html 中确认 SDK 脚本已正确加载&#xff1a;参考官网Web SDK 概述 - 极光文档 <!-- 引入极光认证 SDK --> <script type"text/javascript" src&qu…

three.js - 置换贴图(displacementMap)、凹凸贴图(bumpMap)

这就是个灰度图 瞅瞅下面的贴图们&#xff0c;加深一下印象吧 说一下灰度图 在灰度图中&#xff0c; 黑色&#xff1a;代表最低的深度&#xff08;或最低的置换&#xff09; 白色&#xff1a;代表最高的深度&#xff08;或最高的置换&#xff09; 中间的灰度值&#xff0c;则…

java基于ssm+jsp 网络视频播放器

1前台首页功能模块 网络视频播放器&#xff0c;在系统首页可以查看首页、视频信息、系统公告、论坛信息、我的、跳转到后台、客服等内容&#xff0c;如图1所示。 图1前台首页功能界面图 用户登录&#xff0c;在登录页面可以填写账号、密码等信息进行登录&#xff0c;如图2所示…

Day4: 两两交换链表中的节点 24 删除链表的倒数第N个节点 19 链表相交 02.07 环形链表II 142

题目24. 两两交换链表中的节点 - 力扣&#xff08;LeetCode&#xff09; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* …

Kivy tutorial 003: Building a full GUI

Kivy tutorial 003: Building a full GUI – Kivy Blog Central themes: Adding Widgets to one another 中心主题&#xff1a; 添加组件到另一个组件中 The tutorals so far have covered the very basics of a Kivy application; getting everything running, adding a Wid…

【linux】TCP交流状态变迁及一些函数调用

代码 登录 - Gitee.comhttps://gitee.com/r77683962/linux-6.9.0/commit/50bb00d844b9423c9bacf44d9b06604fab941686 https://gitee.com/r77683962/linux-6.9.0/raw/50bb00d844b9423c9bacf44d9b06604fab941686/dmesg_log/kern_tcp_with_state.log 从打印的日志&#xff0c;…

石油化工厂为什么要用专业防爆手机?

防爆手机之所以必须使用专业设计的产品&#xff0c;主要是出于安全考虑&#xff0c;以防止在易燃易爆环境中因手机使用不当引发爆炸事故。以下几点详细解释了使用专业化工防爆手机的必要性&#xff1a; 本质安全设计&#xff1a;顶坚专业防爆手机采用了本质安全&#xff08;本安…

线程版服务器实现(pthread_server)

用到的所有方法所需要的参数可以在wrap.c文件中查询&#xff0c;wrap中找不到的直接通过man手册查询 1.首先介绍一下我自己写的包裹文件&#xff0c;里面有各种在可能要用到的方法 wrap.c: #include <stdlib.h> #include <stdio.h> #include <unistd.h> #…

【IDEA】单项目多启动

IDEA 允许多次运行项目 一般来说一个项目仅允许启动一次&#xff0c;启动后它的启动按钮就会变成重启按钮&#xff0c;但是一些情况下我们可能需要启动多个客户端&#xff0c;可以用于模拟多个网络请求的发送等&#xff0c;多启动的开启方式如下&#xff1a; 2023.x 之后的版本…