go语言switch语句用法

简介:

switch是最灵活的一种控制语句,在使用switch时候,需要注意:

    --左花括号"{"必须与switch处于同一行

    --条件表达式不限制为常量或者整数

    --单个case中,可以出现多个结果选项

    --与C语言等规则相反,G0语言不需要break来明确退出一个case

    --只有在case中明确添加fallthrough关键字,才会继续执行紧跟的下一个case

    --可以不设定switch之后的条件表达式,在此种情况下,整个switch结构与多个if....else的逻辑作用等同

    --可以有任意数量的case语句在switch内,每个case后跟值进行比较,以及一个冒号

    --在switch语句中使用的表达式必须具有整体或布尔表达式,或者是一个类型,如果表达式不通过,默认值为true

    --constant-expression的情况,必须是相同的数据类型,在switch的变量,它必须是一个常量或文字

    --switch语句可有一个可选的default,它必须出现在switch语句的末尾,default可用于在没有任何case为真时执行任务,default之后不需要break语句

流程图

wKiom1muFNHilokfAAC3ufy45WA934.png-wh_50

egg1:


package main
import "fmt"
func main() {
    var grade string = "A"
    switch {
    case grade == "A":
        fmt.Printf("Good....\n")
    case grade == "B":
        fmt.Printf("Well Done....\n")
    case grade == "C":
        fmt.Printf("Ok....")
    default:
        fmt.Printf("iNVALID grade....\n")
    }
    fmt.Printf("Your grade is %s\n", grade)
}

egg2:


package main
import "fmt"
func main() {
    switch a := 1; {
    case a >= 0:
        fmt.Printf("a>=0")
        fallthrough //如果不加这个只会打印a>=0,不会执行后面的a>=1的语句,若要让每个case都判断,都要在case 后面加 fallthrough 
    case a >= 1:
        fmt.Printf("a=1")
    default:
        fmt.Printf("not found...")
    }
}

##需要注意的是跟在switch属于局部的变量,只能在内部实现访问,若要全局必须在switch外部



本文转自 DBAspace 51CTO博客,原文链接:http://blog.51cto.com/dbaspace/1962851

相关文章
|
9月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
420 2
|
11月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
644 0
|
11月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
467 0
|
11月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
500 0
|
11月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
737 0
|
Go Windows
go的Type switch是一个switch语句么?
相信这样的语句在go中大家见的很多 switch t := arg.(type) { default: fmt.Printf("unexpected type %T\n", t) // %T prints whatever type t has case bool: fmt.
1125 0
|
编译器 Go
揭秘 Go 语言中空结构体的强大用法
Go 语言中的空结构体 `struct{}` 不包含任何字段,不占用内存空间。它在实际编程中有多种典型用法:1) 结合 map 实现集合(set)类型;2) 与 channel 搭配用于信号通知;3) 申请超大容量的 Slice 和 Array 以节省内存;4) 作为接口实现时明确表示不关注值。此外,需要注意的是,空结构体作为字段时可能会因内存对齐原因占用额外空间。建议将空结构体放在外层结构体的第一个字段以优化内存使用。
|
运维 监控 算法
监控局域网其他电脑:Go 语言迪杰斯特拉算法的高效应用
在信息化时代,监控局域网成为网络管理与安全防护的关键需求。本文探讨了迪杰斯特拉(Dijkstra)算法在监控局域网中的应用,通过计算最短路径优化数据传输和故障检测。文中提供了使用Go语言实现的代码例程,展示了如何高效地进行网络监控,确保局域网的稳定运行和数据安全。迪杰斯特拉算法能减少传输延迟和带宽消耗,及时发现并处理网络故障,适用于复杂网络环境下的管理和维护。
|
11月前
|
Cloud Native 安全 Java
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
645 1
|
开发框架 JSON 中间件
Go语言Web开发框架实践:路由、中间件、参数校验
Gin框架以其极简风格、强大路由管理、灵活中间件机制及参数绑定校验系统著称。本文详解其核心功能:1) 路由管理,支持分组与路径参数;2) 中间件机制,实现全局与局部控制;3) 参数绑定,涵盖多种来源;4) 结构体绑定与字段校验,确保数据合法性;5) 自定义校验器扩展功能;6) 统一错误处理提升用户体验。Gin以清晰模块化、流程可控及自动化校验等优势,成为开发者的优选工具。

热门文章

最新文章