请选择 进入手机版 | 继续访问电脑版

[Golang] Go中的条件语句Switch示例详解

[复制链接]
查看50 | 回复11 | 2021-9-15 01:50:17 | 显示全部楼层 |阅读模式

Switch简介

Go的switch的基本功能和C、Java类似 :

  • switch 语句用于基于不同条件实行 不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。
  • 匹配项后面也不必要 再加 break。

特点:

switch 默认环境 下 case 末了 自带 break 语句,匹配成功后就不会实行 其他 case

重点先容 Go当中的Switch的两个特殊 点:**

  1. 表达式判断为true还需要执行后面的 case,可以使用 fallthrough
  2. type-switch 来判断某个 interface 变量中实际存储的变量类型
复制代码

fallthrough

特点:

逼迫 实行 后面的 case 语句,fallthrough 不会判断 下一条 case 的表达式效果 是否为 true。

示例:

  1. package main
  2. import "fmt"
  3. func main() {
  4. switch {
  5. case true:
  6. fmt.Println("1、case条件语句为false!")
  7. fallthrough
  8. case false:
  9. fmt.Println("2、case条件语句为true!")
  10. default:
  11. fmt.Println("默认的case")
  12. }
  13. }
复制代码

代码分析:

  • 正常来说当实行 完第一条语句以后不会实行 第二个
    1. case
    复制代码
    ,由于 第二个
    1. case
    复制代码
    1. false
    复制代码
    而且已经实行 完了第一个
    1. true
    复制代码
    1. case
    复制代码
    1. fallthrough
    复制代码
    关键字存在会逼迫 实行 第二个
    1. case
    复制代码

Type Switch

特点:

  • 判断 某个 interface 变量中实际 存储的变量范例
  • 可以罗列 范例 ,值范例 和引用范例 都可以

语法格式:

  1. switch x.(type){
  2. case type:
  3. statement(s);
  4. case type:
  5. statement(s);
  6. /* 你可以定义任意个数的case */
  7. default: /* 可选 */
  8. statement(s);
  9. }
复制代码

示例:

  1. package main
  2. import (
  3. "fmt"
  4. "go/types"
  5. )
  6. func main() {
  7. var inter interface{} = true
  8. //使用变量去代替接口当中的值并且判断类型
  9. switch i := inter.(type) {
  10. case types.Nil:
  11. fmt.Println("x的类型是:", i)
  12. case int:
  13. fmt.Println("x是int类型")
  14. case float64:
  15. fmt.Println("x是float64类型")
  16. case func(int2 int):
  17. fmt.Println("x是func(int)类型")
  18. case bool, string:
  19. fmt.Println("x是bool或string类型")
  20. default:
  21. fmt.Println("未知类型")
  22. }
复制代码

可以直接判断 接口当中的数据的数据范例

到此这篇关于Go中的条件语句Switch详解的文章就先容 到这了,更多干系 Go条件语句Switch内容请搜刮 脚本之家从前 的文章或继续欣赏 下面的干系 文章盼望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 务川冷泉水鱼庄 | 2021-9-22 00:55:12 | 显示全部楼层
被admin楼主的逻辑打败了!
回复

使用道具 举报

avatar 123457839 | 2021-9-26 23:24:58 | 显示全部楼层
这么版块的帖子越来越有深度了!
回复

使用道具 举报

avatar Lieutenant555 | 2021-10-4 10:08:39 | 显示全部楼层
好东西,学习学习!
回复

使用道具 举报

avatar 清荼蘼荼iq | 2021-10-4 12:23:05 | 显示全部楼层
今天上网不回帖,回帖就回精华帖!
回复

使用道具 举报

avatar C丶sunshine | 2021-10-6 02:12:35 | 显示全部楼层
admin楼主是好人!
回复

使用道具 举报

avatar 安桐AnnTong | 2021-10-6 04:43:35 | 显示全部楼层
学习雷锋,好好回帖!
回复

使用道具 举报

avatar 千山落月坝 | 2021-10-6 05:26:35 | 显示全部楼层
看帖回帖一条路!
回复

使用道具 举报

灌水不是我的目的!
回复

使用道具 举报

对牛弹琴的人越来越多了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则