Go语言条件语句

文章目录

    • 1. `if` 语句:
    • 2. `if-else` 语句:
    • 3. `if-else if-else` 语句:
    • 4. `switch` 语句:
    • 5.`select`语句

Go语言提供了一些条件语句来实现不同的条件分支和决策逻辑。以下是Go语言中常用的条件语句:

1. if 语句:

  • if 语句用于执行一个代码块,如果给定的条件为真(true)。
if condition {// 如果条件为真,执行这里的代码
}

示例:

age := 18
if age >= 18 {fmt.Println("成年人")
} else {fmt.Println("未成年人")
}

2. if-else 语句:

  • if-else 语句用于执行一个代码块,如果条件为真,则执行一个代码块,如果条件为假,则执行另一个代码块。
if condition {// 如果条件为真,执行这里的代码
} else {// 如果条件为假,执行这里的代码
}

3. if-else if-else 语句:

  • if-else if-else 语句用于执行多个条件的判断,只有第一个为真的条件对应的代码块会被执行。
if condition1 {// 如果条件1为真,执行这里的代码
} else if condition2 {// 如果条件2为真,执行这里的代码
} else {// 如果条件1和条件2都为假,执行这里的代码
}

4. switch 语句:

  • switch 语句用于执行多个不同条件的分支,根据条件的匹配执行相应的代码块。
switch expression {
case value1:// 当表达式等于value1时,执行这里的代码
case value2:// 当表达式等于value2时,执行这里的代码
default:// 如果没有匹配的条件,执行这里的代码
}

示例:

day := "Wednesday"
switch day {
case "Monday":fmt.Println("星期一")
case "Tuesday":fmt.Println("星期二")
case "Wednesday":fmt.Println("星期三")
default:fmt.Println("其他天")
}

Go语言的条件语句非常灵活,可以根据不同的条件和需求来选择适当的条件语句来实现代码的逻辑控制。这些条件语句使程序能够根据不同的条件执行不同的代码块。

5.select语句

select 语句是Go语言中用于处理通道通信和多路复用的关键语句。select 语句允许您同时等待多个通道操作,并在其中一个操作准备就绪时执行相应的代码块。这使得在并发编程中可以更有效地处理多个通道操作,如读取、写入、超时等。

select 语句的一般语法如下:

select {case channelOperation1:// 处理通道操作1case channelOperation2:// 处理通道操作2// 可以有更多的casedefault:// 如果没有通道操作准备就绪,执行这里的代码
}

select 语句中,您可以列出多个 case 语句,每个 case 语句都是一个通道操作(读取或写入)。当 select 语句执行时,它会等待这些通道操作中的任何一个准备就绪。一旦有通道操作准备就绪,相应的 case 代码块将被执行。如果没有通道操作准备就绪,那么可以选择执行 default 语句中的代码块(如果存在)。

以下是一些 select 语句的常见用法示例:

  1. 使用 select 语句处理通道读取和写入:
ch1 := make(chan int)
ch2 := make(chan int)go func() {ch1 <- 42
}()
go func() {ch2 <- 99
}()select {
case val := <-ch1:fmt.Printf("从ch1读取到:%d\n", val)
case val := <-ch2:fmt.Printf("从ch2读取到:%d\n", val)
}
  1. 使用 select 语句处理通道超时:
ch := make(chan string)
timeout := time.After(2 * time.Second)select {
case msg := <-ch:fmt.Println("接收到消息:", msg)
case <-timeout:fmt.Println("超时")
}
  1. 使用 select 语句实现非阻塞通道操作:
ch := make(chan int, 1)// 如果通道操作不会阻塞,就执行
select {
case ch <- 42:fmt.Println("发送成功")
default:fmt.Println("通道已满,发送失败")
}

select 语句是Go语言中处理并发编程任务的重要工具,它允许您以非常灵活的方式等待多个通道操作,并根据操作的完成情况执行相应的代码块。这对于编写高效且响应迅速的并发程序非常有用。

注意:Go 没有三目运算符,所以不支持 ?: 形式的条件判断。

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

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

相关文章

【算法 | 模拟No.3】leetcode 38. 外观数列

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【Leetcode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

微服务-grpc

微服务 一、微服务&#xff08;microservices&#xff09; 近几年,微服这个词闯入了我们的视线范围。在百度与谷歌中随便搜一搜也有几千万条的结果。那么&#xff0c;什么是微服务 呢&#xff1f;微服务的概念是怎么产生的呢&#xff1f; 我们就来了解一下Go语言与微服务的千丝…

RDS for Mysql 到云数据库GaussDB

前言 该实验旨在指导用户使用DRS将RDS MySQL上的数据迁移到 GaussDB中。 本实验涉及数据复制服务DRS&#xff08;Data Replication Service&#xff09;、关系型数据库服务RDS&#xff08;Relational Database Service&#xff09;、GaussDB、数据管理服务DAS&#xff08;Data…

金融学习资料维护库

诸神缄默不语-个人CSDN博文目录 金融那块也会用到很多计算机知识&#xff0c;所以学习金融的博文也可以放到技术博客里&#xff0c;这很河狸。 &#xff08;好吧其实主要是我写博客的主阵地在CSDN懒得挪窝了&#xff09; 文章目录 1. 术语金融产品基金 1. 术语 金融产品 基金…

从研发域到量产域的自动驾驶工具链探索与实践

导读 本文整理自 2023 年 9 月 5 日百度云智大会 - 智能汽车分论坛&#xff0c;百度智能云自动驾驶云研发高级经理徐鹏的主题演讲《从研发域到量产域的自动驾驶工具链探索与实践》。 全文中部段落附有演讲中 2 个产品演示视频的完整版&#xff0c;精彩不容错过。 (视频观看&…

torch.mv

torch.mv(input, vec, *, outNone) → Tensor执行矩阵input和向量vec的矩阵向量乘积。 如果input是&#xff08;nm&#xff09;张量&#xff0c;vec是大小为m的1-D张量&#xff0c;out将是大小为n的1-D。 这句话可以理解为&#xff1a; 如果input是&#xff08;nm&#xff09…

Redis7--基础篇2(Redis的十大数据类型及常用命令)

1. Redis的十大数据类型及常用命令 Redis是key-value键值对类型的数据库&#xff0c;我们所说的数据类型指的是value的数据类型&#xff0c;key的数据类型都是字符串。 1.1 字符串&#xff08;String&#xff09; string是redis最基本的类型&#xff0c;一个key对应一个val…

船舶数据采集与数据模块解决方案

标准化信息处理单元原理样机初步方案&#xff1a; 1&#xff09;系统组成 标准化信息处理单元原理样机包含硬件部分和软件部分。 硬件部分包括集成电路板、电源模块、主控模块、采集模块、信息处理模块、通讯模块、I/O模块等。 软件部分包括协议统一标准化模块、设备互联互…

Scala爬虫如何实时采集天气数据?

这是一个基本的Scala爬虫程序&#xff0c;使用了Scala的http library来发送HTTP请求和获取网页内容。在爬取天气预报信息时&#xff0c;我们首先需要创建一个代理对象proxy&#xff0c;并将其用于发送HTTP请求。然后&#xff0c;我们使用http库的GET方法获取网页内容&#xff0…

前端读取文件当文件选择相同文件名的文件,内容不会变化

前端读取文件当文件选择相同文件名的文件&#xff0c;内容不会变化 今天遇到个奇怪的bug&#xff0c;使用打开文件&#xff0c;并选择文件时&#xff0c;正常情况会读取文件信息。 但是如果先选择相同的文件名&#xff0c;则内容不会发生变化。 先说结论 只要不使用事件中e…

【高分快刊】Elsevier旗下,中科院2区SCI,2个月19天录用!

计算机类 • 高分快刊解读 今天小编带来Elsevier旗下计算机领域好刊的解读&#xff0c;如有相关领域作者有意向投稿&#xff0c;可作为重点关注&#xff01;后文有真实发表案例&#xff0c;供您投稿参考~ 01 期刊简介 ☑️出版社&#xff1a;Elsevier ☑️影响因子&#xf…

能源监测管理系统有哪些作用与效果?

随着全球能源的不断增加&#xff0c;能源的有限性与环境问题日益严重&#xff0c;用能管理企业需要一种高效的方法来管理能源与利用能源&#xff0c;因此能源监测管理系统成为了一种不可或缺的工具。 能源监测管理系统的重要性 1、实现节能减排的目标 通过系统&#xff0c;可…

电动汽车充放电V2G模型

威♥关注“电击小子程高兴的MATLAB小屋”获取更多资料 1主要内容 本程序主要建立电动汽车充放电V2G模型&#xff0c;采用粒子群算法&#xff0c;在保证电动汽车用户出行需求的前提下&#xff0c;为了使工作区域电动汽车尽可能多的消纳供给商场基础负荷剩余的光伏电量&#xf…

一例恶搞的样本的分析

概述 这个病毒会将自身伪装成水印标签系统&#xff0c;通过感染桌面和U盘中的后缀名为.doc、.xls、.jpg、.rar的文件来传播。会监听本地的40118端口&#xff0c;预留一个简单的后门&#xff0c;利用这个后门可远程执行锁屏、关机、加密文件、开启文件共享等操作。 样本的基本…

【Azure 架构师学习笔记】-Azure Storage Account(5)- Data Lake layers

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Storage Account】系列。 接上文 【Azure 架构师学习笔记】-Azure Storage Account&#xff08;4&#xff09;- ADF 读取Queue Storage 前言 不管在云还是非云环境中&#xff0c; 存储是IT 系统的其中一个核心组件。在…

Educational Codeforces Round 157 (A--D)视频详解

Educational Codeforces Round 157 &#xff08;A--D&#xff09;视频详解 视频链接A题代码B题代码C题代码D题代码 视频链接 Educational Codeforces Round 157 &#xff08;A–D&#xff09;视频详解 A题代码 #include<bits/stdc.h> #define endl \n #define deb(x)…

React 其他常用Hooks

1. useImperativeHandle 在react中父组件可以通过forwardRef将ref转发到子组件&#xff1b;子组件拿到父组件创建的ref&#xff0c;绑定到自己的某个元素&#xff1b; forwardRef的做法本身没有什么问题&#xff0c;但是我们是将子组件的DOM直接暴露给了父组件&#xff0c;某下…

shopee、亚马逊卖家如何安全给自己店铺测评?稳定测评环境是关键

大家都知道通过测评可以提升产品的转化率&#xff0c;提升产品的销量&#xff0c;那么做跨境平台的卖家如何安全的给自己店铺测评呢&#xff1f; 无论是亚马逊、拼多多Temu、shopee、Lazada、wish、速卖通、敦煌网、Wayfair、雅虎、eBay、Newegg、乐天、美客多、阿里国际、沃尔…

【数据结构】树与二叉树(五):二叉树的顺序存储(初始化,插入结点,获取父节点、左右子节点等)

文章目录 5.1 树的基本概念5.1.1 树的定义5.1.2 森林的定义5.1.3 树的术语5.1.4 树的表示 5.2 二叉树5.2.1 二叉树1. 定义2. 特点3. 性质引理5.1&#xff1a;二叉树中层数为i的结点至多有 2 i 2^i 2i个&#xff0c;其中 i ≥ 0 i \geq 0 i≥0。引理5.2&#xff1a;高度为k的二叉…

Flink(一)【WordCount 快速入门】

前言 学完了 Hadoop、Spark&#xff0c;本想着先把 Kafka、Flume 这些工具先学完的&#xff0c;但想了想还是把核心的技术先学完最后再去把那些工具学学。 最近心有点累哈哈哈&#xff0c;偷偷立个 flag&#xff0c;反正也没人看&#xff0c;明年的今天来这里还愿哈&#xff0c…