分享
  1. 首页
  2. 文章

Golang学习笔记-1.8 switch语句

xunk1900 · · 1307 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

本文系第八篇Golang语言学习教程
switch是一个条件语句,用于将表达式的值与可能匹配的选项列表进行比较,并根据情况执行相应代码。是替代if else的常用方式。

下面通过讲解一个简单的运算程序来了解switch语句

package main
import "fmt"
func eval(a, b int, op string) int { //定义eval函数,输入三个值 a, b, op 输出类型为 int
 var result int
 switch op { // op 为表达式,将 op 的值与下面 case 比较
 case "+": //若 op 值为 + , 则将 result 赋值 a + b 以此类推
 result = a + b
 case "-":
 result = a - b
 case "*":
 result = a * b
 case "/":
 result = a / b
 default: //如果输入没有以上匹配的字符,则属于默认情况,运行默认情况
 fmt.Println("unsupported operator:" + op) //输出不识别 op 值的报错
 }
 return result
}
func main(){
 fmt.Println(
 eval(10, 4, "+"),
 eval(15, 6, "-"),
 eval(2, 4, "*"),
 eval(100, 4, "/"),
 )
}

在以上程序中,switch 将 op 的值作为表达式,与case比较。op值若为"+",所以匹配到第一个case,给result赋值后退出case。以此类推
若op输入的值没有匹配到,则属于默认情况,运行默认代码,本程序输出报错。

以上程序执行结果为 :14 9 8 25

多表达式判断

通过用,逗号隔开,一个case中可以写多个表达式

func main(){
 letter := "i"
 switch letter {
 case "a", "o", "e", "i", "u": //用 "," 逗号分隔,多个表达式
 fmt.Println(letter, "is in vowel")
 default:
 fmt.Println(letter, "is not in vowel")
 }
}

在 case a,e,i,o,u: 这一行中,列举了所有的元音。只要匹配该项,则将输出 i is in vowel

无表达式的switch

switch中,表达式是可选的,如果省略表达式,则这个switch语句等同于switch true,每个case都被认定为有效,执行相应的代码块。

func main(){
 num := 79
 switch { //省略表达式
 case num >= 0 && num <= 50:
 fmt.Println("num is greater than 0 and less than 50")
 case num >= 50 && num <= 100:
 fmt.Println("num is greater than 50 and less than 100")
 case num >= 100:
 fmt.Println("num is greater than 100")
 }
}

在以上程序中,num值为79,省略表达式,则匹配每个case,直至结束。
以上程序输出输出: num is greater than 50 and less than 100

Fallthrough语句

在 Go 中,每执行完一个 case 后,会从 switch语句中跳出来,不再做后续 case 的判断和执行。使用fallthrough语句可以在已经执行完成的 case 之后,把控制权转移到下一个case 的执行代码中。
还是上一个程序,但如果将num赋值100,只会匹配到第二个case后跳出,我们加上fallthrough后查看效果。

func main(){
 num := 79
 switch { //省略表达式
 case num >= 0 && num <= 50:
 fmt.Println("num is greater than 0 and less than 50")
 case num >= 50 && num <= 100:
 fmt.Println("num is greater than 50 and less than 100")
 fallthrough
 case num >= 100:
 fmt.Println("num is greater than 100")
 }
}

num := 100,可以配置第二个case,也可以匹配第三个,通过fallthrough,我们成功的同时匹配到了两个case。

注意:fallthrough语句应该是 case 子句的最后一个语句。不要写在case语句的中间。

以上为学习Golang switch篇


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:xunk1900

查看原文:Golang学习笔记-1.8 switch语句

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1307 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏