Go语言学习之Switch语句的使用
作者:孙琦Ray 时间:2024-04-23 09:38:57
基本语法
在讲述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
标签:Go,Switch
0
投稿
猜你喜欢
Python Socket编程之多线程聊天室
2021-03-23 21:01:02
设定php简写功能的方法
2024-05-13 09:25:21
python七种方法判断字符串是否包含子串
2023-09-19 04:06:20
Python partial函数原理及用法解析
2021-01-22 02:48:50
python中的列表和元组实例详解
2023-07-26 23:04:12
SQL Server 高性能写入的一些经验总结
2024-01-21 10:46:37
Python模拟百度登录实例详解
2023-07-18 19:06:46
AJAX使用get与post模式的区别分析
2024-04-29 13:58:39
PyTorch开源图像分类工具箱MMClassification详解
2023-11-21 02:20:06
mysql仿oracle的decode效果查询
2024-01-12 22:04:00
python实现21点小游戏
2023-11-21 08:58:27
MySQL一些常用高级SQL语句详解
2024-01-29 02:45:22
Python anaconda安装库命令详解
2023-01-31 16:36:36
javascript实现表格增删改操作实例详解
2024-04-29 13:24:36
golang实现跨域访问的方法
2024-02-15 18:33:31
Laravel实现批量更新多条数据
2023-10-23 03:23:03
弹出网页窗口全详细攻略
2008-04-18 12:10:00
Python的Django中将文件上传至七牛云存储的代码分享
2023-11-28 14:00:24
sql server 表结构修改方法
2024-01-16 15:51:40
.NET Framework SQL Server 数据提供程序连接池
2024-01-27 05:05:23