当前位置:网站首页> Go语言学习之Switch语句的使用
Go语言学习之Switch语句的使用
2022-06-30 10:41:00 【1024问】
基本语法
fallthrough使用方法
多条件匹配
判断接口(interface)类型
空接口
获取实际类型
基本语法在讲述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 0fallthrough使用方法默认情况下,case满足执行后会进行break,后面case即使满足条件也不再循环,如果想继续执行,则需要添加fallthrough,
package mainimport "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 mainimport "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 mainimport "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
到此这篇关于Go语言学习之Switch语句的使用的文章就介绍到这了,更多相关Go语言 Switch语句内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!
边栏推荐
- SQL必需掌握的100个重要知识点:使用存储过程
- datax - 艰难debug路
- DataX JSON description
- Go zero micro Service Practice Series (VIII. How to handle tens of thousands of order requests per second)
- [untitled]
- LED driver library based on Hal Library
- 深潜Kotlin协程(十七):演员
- 中国将强制统一充电接口,苹果如不低头,iPhone将被踢出中国市场
- Iptables target tproxy
- 8行代码实现快速排序,简单易懂图解!
猜你喜欢
随机推荐
[understanding of opportunity -34]: fate is within the light cone
LVGL 8.2 menu from a drop-down list
Qt之实现动效导航栏
20万奖金池!【阿里安全 × ICDM 2022】大规模电商图上的风险商品检测赛火热报名中!...
The life, working principle and application of electrochemical oxygen sensor
MySQL从入门到精通50讲(三十二)-ScyllaDB生产环境集群搭建
SQL必需掌握的100个重要知识点:使用子查询
Mysql database foundation: constraint and identification columns
LVGL 8.2 Simple Drop down list
Collectors. Tomap application
MySQL导出sql脚本文件
再测云原生数据库性能:PolarDB依旧最强,TDSQL-C、GaussDB变化不大
Mysql database foundation: TCL transaction control language
再测云原生数据库性能:PolarDB依旧最强,TDSQL-C、GaussDB变化不大
CP2112使用USB转IIC通信教学示例
LVGL 8.2 menu from a drop-down list
从开源项目探讨“FPGA挖矿”的本质
Pandora IOT development board learning (HAL Library) - Experiment 1 running lantern (RGB) experiment (learning notes)
How can the sports app keep the end-to-side background alive to make the sports record more complete?
LVGL 8.2 Drop down in four directions









