go语言教程4:switch和map

news2024/9/22 16:50:59

文章目录

    • switch
    • switch匹配
    • 字典

go语言教程:安装入门➡️for循环➡️数组、切片和指针

switch和map,一个是控制流,一个是数据结构,之所以把两个不同类型的知识点放在一起讲解,是因为二者有着极其相似的运行逻辑,很多时候用于解决相似的问题。

switch

switch是C语言中就有的关键字,可匹配判定条件,并执行相关代码。而在go语言中,switch的功能得到了强化,首先可以作为if...else的替代品,示例如下

//switch.go
package main
import "fmt"

func getGrade(n int)string{
	switch{
		case n == 100: return "S"
		case n >= 90 : return "A"
		case n >= 80 : return "B"
		case n >= 60 : return "C"
		case n >= 50 : return "D"
		default: return "E"		
	}
}

func main(){
	fmt.Println("100分的等级是:", getGrade(100))
	fmt.Println("85分的等级是:", getGrade(85))
	fmt.Println("62分的等级是:", getGrade(62))
	fmt.Println("45分的等级是:", getGrade(45))
}

运行结果如下

>go run switch.go
100分的等级是: S
85分的等级是: B
62分的等级是: C
45分的等级是: E

switch匹配

其次,Go语言也支持类似C语言的switch用法,即匹配输入内容,但在语法上更加简洁,无需在每个case后面添加break。

func switchTest(g string){
	fmt.Printf("您考了%s,你", g)
	switch g{
		case "S": fmt.Println("牛逼!\n")
		case "A": fmt.Println("优秀\n")
		case "B": fmt.Println("良好\n")
		case "C": fmt.Println("及格\n")
		case "D":
			fmt.Println("不及格\n" )
			fallthrough
		default:
			fmt.Println("滚\n" )
	}
}

func main(){
	switchTest("S")
	switchTest("D")
	switchTest("E")
	switchTest("A")
}

其中,fallthrough关键字表示,在执行完本条case之后,忽略匹配条件,继续执行下一条命令。所以,如果匹配了D,那么在输出不及格之后,还会输出一个“滚”字。运行结果如下

您考了S,你牛逼!
您考了D,你不及格

您考了E,你滚
您考了A,你优秀

字典

map

如果不考虑falthrough和default这两个功能,那么switch…case的匹配过程是一对一的,大致遵循下表

SABCDE
牛逼优秀良好及格不及格

而这张表,正体现出字典的键值对映射关系,在go语言中,map就是描述键值对映射的数据类型,而创建map的方法,与创建切片一样,也是通过make关键字,其声明方式如下,mp1通过字符串索引整型,mp2则通过字符串索引字符串。

mp1 := make(map[string]int)
mp2 := make(map[string]string)

下面用map来重新实现等级和说明的匹配逻辑

func mapTest(g string){
	mp := map[string]string{
		"S": "牛逼!", "A": "优秀",
		"B": "良好",  "C": "及格",
		"D": "不及格",
		"E": "滚",
	}
	fmt.Println(g, mp[g])
}

由于在创建时直接对map的内容初始化了,所以并不需要用到make。

在这里插入图片描述

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

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

相关文章

WSL+vscode配置miniob环境

1.配置WSL Windows Subsystem for Linux入门:安装配置图形界面中文环境vscode wu-kan 2.获取源码 找个位置Git Bash然后拉取代码 git clone https://github.com/oceanbase/miniob.git 3.安装相关依赖 https://gitee.com/liangcha-xyy/source/blob/master/how…

Spring Boot Bean 注入的常用方式教程

Spring Boot Bean 注入是一种将依赖对象引入到应用程序组件中的机制,它有助于实现松耦合和可测试的代码。这种注入方式允许我们将依赖关系委托给 Spring 容器来管理,从而提高了代码的可维护性和可读性。Spring Boot 提供了多种 Bean 注入方式&#xff0c…

qt判断当前日期的当月的最后一天是几号

1、拖个dateTimeEdit在界面上,同时来判断输入的时间的最后一天的日期是什么? int year,month;int monthArr[12]{31,28,31,30,31,30,31,31,30,31,30,31};QDateTime time ui->dateTimeEdit->dateTime();year time.toString("yyyy").toIn…

C++入门介绍

1.C入门知识 以下是一些 C 入门知识: C 是一种面向对象的编程语言,它具有高效、灵活、可移植性好等特点 C 中的基本数据类型包括整型、浮点型、字符型等 C 中的控制语句包括条件语句(if、else)、循环语句(for、while、…

飞凌嵌入式成为“龙芯生态伙伴计划”认证级企业!

近日,飞凌嵌入式正式成为“龙芯生态伙伴计划”认证企业,标志着飞凌嵌入式与龙芯中科的紧密型战略合作伙伴关系正式建立! “龙芯生态伙伴计划”由龙芯中科主导发起,旨在推动龙芯生态企业基于龙芯平台开发产品,丰富龙芯…

MyBatisPlus属性自动填充和乐观锁插件+查询删除操作+整合SpringBoot出现问题解决

属性字段自动填充 一、实体类和数据表添加两个字段(属性) 表:create_tiem/update_time 实体类:createTime/updateTime 二、实体类中属性进行注解添加 TableField(fillFieldFill.INSERT) private Date createTime;TableField(f…

DC2DC电源设计注意事项--1,Feedback

电源采集图如下图 Feedback 采集电压点应该在靠近负载侧。这样可以减少大电流导线导致的电压差,真实反应输出电压值 FB_1P21采集电路靠近芯片侧, 2.1,采集分压电路上侧为Vout Vnoise, 那么一分压就噪声就小了。假如采集电路远离芯片侧&…

简洁多媒体影音库 Emby 中文最新 for mac

Emby是一款用于媒体服务器和媒体中心的软件平台。它允许用户将个人的音乐、电影、电视节目、照片和其他媒体文件组织和管理起来,并通过各种设备进行访问和流媒体播放。 以下是Emby可能提供的一些主要功能和特点: 媒体管理和组织:Emby允许用户…

蒙特卡洛方法的简单应用

蒙特卡洛方法的简单应用 圆周率估算 eastimate pi python version 3.11 RNG:np.random.random import os figure_save_path "file_fig" import warnings warnings.filterwarnings("error") import numpy as np np.random.seed(0) import matplotlib.pyp…

温度在线检测技术在电力电缆线路的应用

在电力电缆的日常运行检测中,针对电缆温度的状况,所采用的电力温度在线检测技术也得到了大范围的普及。电网系统中,其单位时间内可输送的电力能源受到其温度的变化影响。因此,采用更有效的方式实时检测电缆系统运行温度&#xff0…

虾皮商品链接获取虾皮商品详情数据(用 Python实现虾皮商品信息抓取)

在网页抓取方面,可以使用 Python、Java 等编程语言编写程序,通过模拟 HTTP 请求,获取虾皮网站上的商品页面。在数据提取方面,可以使用正则表达式、XPath 等方式从 HTML 代码中提取出有用的信息。值得注意的是,虾皮网站…

miRNA测序数据生信分析——第三讲,已知物种的生信分析实例

miRNA测序数据生信分析——第三讲,已知物种的生信分析实例 miRNA测序数据生信分析——第三讲,已知物种的生信分析实例1. 下载测序数据2. 原始数据质控——软件fastqc3. 注释tRNA和rRNA,使用Rfam数据库——软件blast,Rfam_statisti…

MySQL数据库技术笔记(3)

概述 学习MySQL数据库技术其实只需要安装mysql服务器就可以使用了。只不过对于初学者来说直接操作dos窗口方式比较麻烦,命令不熟悉,导致经常写错。在真实的开发当中直接操作dos窗口效率比较慢,企业中也会经常使用一些mysql数据库支持的可视化…

【VR开发】【Unity】0-课程简介和概述

【说明】 这是我录制的一套VR基础开发课程的文字版本,更加便于快速参考。 应大家在后台所提的需求,从今天开始,我计划带给大家一套完整达40课时的VR开发基础课程。 在开始学习前需要注意如下几点: 本教程基于Unity2022.2.1f1版…

【Python 零基础入门】基础语法

【Python 零基础入门】第四课 基础语法 【Python 零基础入门】第四课 基础语法怎么写 Python 代码缩进注释Python 标识符规则Python关键字代码行和块导包 字符串操作字符串连接字符串的其他常用方法 循环for 循环while 循环 判断语句比较运算符逻辑运算符if 判断三元表达式brea…

【已解决】ORA-01722: invalid number

文章目录 ORA-01722: invalid number问题思路解决 ORA-01722: invalid number 问题 invalid number 字符与数值不匹配 oracle 截取 ‘1-2’ 只需要’-前面的 思路 一、问题提示 执行Oracle的sql语句提示【ORA-01722: invalid number】无效数字错误。 二、问题分析 2.1、类…

共模电感在EMC电路里有哪些原理及作用?|深圳比创达EMC

共模电感在EMC电路里有哪些原理及作用?相信不少人是有疑问的,今天深圳市比创达电子科技有限公司就跟大家解答一下! 一、共模电感在EMC电路里的作用 EMC电路设计中共模干扰问题居多,所以共模电感很常见。共模电感是可以抑制共模干…

亚马逊“黑五网一”大促开启!如何抓住流量密码实现爆单?

亚马逊“黑五网一”大促从起10月30日正式开始,对比往年活动周期增加至11天,作为海外电商年度盛宴,将覆盖Choice day年度盛典、双十一、黑色星期五三大营销节点,备受全民瞩目。 去年,仅是美国消费者在“黑五”期间消费…

golang使用energy开发GUI桌面程序,CEF,LCL

1、概述 仓库:https://github.com/energye/energy 文档:https://energy.yanghy.cn/ Energy 是 Go 基于 CEF(Chromium Embedded Framework) 开发的框架,内嵌 CEF 二进制 使用 Go 和 Web 端技术 ( HTML CSS JavaScript ) 构建支持Windows, …

配电室六氟化硫气体泄漏报警装置安装位置

六氟化硫气体泄漏报警装置安装位置产品的设计、检验、制造均遵循GB16808-2008《可燃气体报警控制器》和GB12358-2006《作业场所环境气体检测报警仪通用技术要求》严格设计。是经过高速CPU数据处理,通过LCD显示出探测器的浓度、状态并输出相应的控制信号。报警控制器…