Go语言学习之Switch语句的使用
作者:孙琦Ray 发布时间:2024-04-23 09:38:57
标签:Go,Switch
基本语法
在讲述if-else时已经提到,如果有多个判断条件,Go语言中提供了Switch-Case的方式。如果switch后面不带条件相当于switch true
// Convert hexadecimal character to an int value
switch {
case '0' <= c && c <= '9':
return c - '0'
case 'a' <= c && c <= 'f':
return c - 'a' + 10
case 'A' <= c && c <= 'F':
return c - 'A' + 10
}
return 0
fallthrough使用方法
默认情况下,case满足执行后会进行break,后面case即使满足条件也不再循环,如果想继续执行,则需要添加fallthrough,
package main
import "fmt"
func main() {
i := 3
switch i {
case i > 0:
fmt.Println("condition 1 triggered")
fallthrough
case i > 2:
fmt.Println("condition 2 triggered")
fallthrough
default:
fmt.Println("Default triggered")
}
}
此时所有的case都会被执行
condition 1 triggered
condition 2 triggered
Default triggered
多条件匹配
如果同一个条件满足,也可以这样罗列到同一条件,相当于或条件
switch i {
case 0, 1:
f()
default:
g()
}
判断接口(interface)类型
空接口
后面我们会讲到接口,通过switch可以对type进行判断,获取接口的真实类型。
package main
import "fmt"
func main() {
var value interface{}
switch q:= value.(type) {
case bool:
fmt.Println("value is of boolean type")
case float64:
fmt.Println("value is of float64 type")
case int:
fmt.Println("value is of int type")
default:
fmt.Printf("value is of type: %T", q)
}
}
在上面的例子中,我们定义了一个空接口
var value interface{}
同时使用switch来判断类型
switch q:= value.(type) {
由于空接口没有内容,所以类型为nil,触发了default
value is of type: <nil>
获取实际类型
我们对上面的例子进行改造,同时让空接口拥有实际的值,再来看看执行的效果
package main
import "fmt"
func valueType(i interface{}) {
switch q:= i.(type) {
case bool:
fmt.Println("value is of boolean type")
case float64:
fmt.Println("value is of float64 type")
case int:
fmt.Println("value is of int type")
default:
fmt.Printf("value is of type: %T\n", q)
}
}
func main() {
person := make(map[string]interface{}, 0)
person["name"] = "Alice"
person["age"] = 21
person["height"] = 167.64
fmt.Printf("%+v\n", person)
for _, value := range person {
valueType(value)
}
}
这里有几个还没有讲到的知识点:
函数的定义方法
定义了一个map,但是值的类型为空接口,意思就是可以是任何类型的值,这在接口章节还会详细讲解,所以大家看到这里不要纠结,继续往下看
赋值时,特意给value不同的类型, string/int/float类型
最后通过循环将变量传给valueType函数,看看程序输出什么结果
map[age:21 height:167.64 name:Alice]
value is of type: string
value is of int type
value is of float64 type
来源:https://blog.csdn.net/xiaoquqi/article/details/125532907
0
投稿
猜你喜欢
- 本文实例讲述了Mysql数据库高级用法之视图、事务、索引、自连接、用户管理。分享给大家供大家参考,具体如下:视图视图是对若干张基本表的引用,
- 方法一使用以下流式代码,无论下载文件的大小如何,Python 内存占用都不会增加:def download_file(url):  
- MVC模式MVC, 全名Model View Controller, 是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Mo
- 在使用pymongo时遇到了一个小坑:在Flask框架中,将字典插入mongodb后再返回就报错@app.route('xxxx
- 简单展示如何利用python中的pandas库创建、读取、修改CSV数据文件1 写入CSV文件import numpy as npimpor
- <P><html><head><meta http-equiv="Content-Typ
- 在写cmu14-445的project时,我希望在本地vscode编辑代码,然后在docker中编译和测试代码。但是如果测试出了问题,直接在
- bookheader.asp Recommended Books for <%=session(&quo
- 字符编码,在编程中,是一个让学习者比较郁闷的东西,比如一个str,如果都是英文,好说多了。但恰恰不是如此,中文是我们不得不用的。所以,哪怕是
- pycurl是功能强大的python的url包,是用c语言写的,速度很快,比urllib和httplib都快调用方法:import pycu
- 代码如下:vbcrlfvbs常量相当于vbcr & vblf 就是常见的那个 chr(13) & chr(10),用Chr(
- 图像的数组表示图像的RGB色彩模式图像一般使用RGB色彩模式,即每个像素点的颜色由红(R)、绿(G)、蓝(B)组成。RGB三个颜色通道的变化
- 原理:建立一个任务队列,然多个线程都从这个任务队列中取出任务然后执行,当然任务队列要加锁,详细请看代码import threadingimp
- 1、前言函数也是一个对象,从而可以增加属性,使用句点来表示属性。如果内部函数的定义包含了在外部函数中定义的对象的引用(外部对象可以是在外部函
- 本文主要通过实例介绍了scrapy框架的使用,分享了两个例子,爬豆瓣文本例程 douban 和图片例程 douban_imgs ,具体如下。
- 这几天用到了raw socket,用python写了些demo程序,这里记录下。首先我们看一个简单的sniffer程序:#! /usr/bi
- 本文实例讲述了python解析xml文件操作的实现方法。分享给大家供大家参考。具体方法如下:xml文件内容如下:<?xml versi
- 二级域名的解析指向ASP源代码,懂程序的人一看就明白怎么实现了。呵呵!真简单<%@ LANGUAGE =&nb
- 代码如下:--销售冠军 --问题:在公司中,老板走进来,要一张每个地区销量前3名的销售额与销售员的报表 --- create t
- mysql_result定义和用法mysql_result() 函数返回结果集中一个字段的值。mysql_result() 返回 MySQL