Go 快速入门指南 - if/else 和 switch
2022/12/27 4:24:07
本文主要是介绍Go 快速入门指南 - if/else 和 switch,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
if/else
Go 中的 if/else 语句和其他编程语言中 if/else
规则一致,除了语法上略有差异。
语法规则
if
和 else if
后面的条件表达式是不需要括号的。
单个 if
if condition { // do something }
例子
package main func main() { n := 1024 if n > 0 { println("n > 0") } } // $ go run main.go // 输出如下 /** n > 0 */
单个 if/else
if condition { // do something } else { // do something else }
例子
package main func main() { n := 1024 if n > 0 { println("n > 0") } else { println("n <= 0") } } // $ go run main.go // 输出如下 /** n > 0 */
多个分支
if condition1 { // do something } else if condition2 { // do something else } else { // default }
例子
package main func main() { n := 0 if n > 0 { println("n > 0") } else if n < 0 { println("n < 0") } else { println("n = 0") } } // $ go run main.go // 输出如下 /** n == 0 */
switch
相较于主流编程语言,Go 中的 switch
语法更加灵活,它接受任意形式的表达式。
语法规则
-
•
switch
后面的表达式不需要括号 -
•
case
语句块执行完会自动退出整个switch
语句块,也就是不需要使用break
显式声明 -
•
case
语句快执行完后,如果希望继续向下执行,可以使用关键字fallthrough
, 这样就和其他编程语言不加break
效果一样了
switch expr { // expr 可以是任意类型 case v1: ... case v2: ... case v3: ... case v4, v5, v6: // 可以同时测试多个可能符合条件的值 ... default: // 默认值 ... }
例子
普通表达式
package main import "fmt" func main() { n := 1024 switch n { case 1023: fmt.Println("n = 1023") case 1024: fmt.Println("n = 1024") case 1025: fmt.Println("n = 1025") } } // $ go run main.go // 输出如下 /** n = 1024 */
运算表达式
package main import "fmt" func main() { n := 1024 switch n * 2 { case 1024: fmt.Println("n = 1024") case 2048: fmt.Println("n = 2048") case 0: fmt.Println("n = 0") } } // $ go run main.go // 输出如下 /** n = 2048 */
default
package main import "fmt" func main() { n := 1024 switch n * 2 { case 0: fmt.Println("n = 0") case 1: fmt.Println("n = 1") case 2: fmt.Println("n = 2") default: fmt.Println("n = 2048") } } // $ go run main.go // 输出如下 /** n = 2048 */
省略 expr 表达式
package main import "fmt" func main() { n := 1024 switch { case n < 1024: fmt.Println("n < 1024") case n > 1024: fmt.Println("n > 1024") case n == 1024: fmt.Println("n == 1024") default: fmt.Println("invalid n") } } // $ go run main.go // 输出如下 /** n = 1024 */
同时测试多个 case
package main import "fmt" func main() { n := 1024 switch n { case 1023, 1024: // 多个 case, 只要一个匹配就 OK fmt.Println("n <= 1024") case 1025: fmt.Println("n > 1024") default: fmt.Println("invalid n") } } // $ go run main.go // 输出如下 /** n <= 1024 */
fallthrough
package main import "fmt" func main() { n := 1024 switch { case n < 1024: fmt.Println("n < 1024") fallthrough // 继续向下执行 case n > 1024: fmt.Println("n > 1024") fallthrough // 继续向下执行 case n == 1024: fmt.Println("n == 1024") fallthrough // 继续向下执行 default: fmt.Println("invalid n") } } // $ go run main.go // 输出如下 /** n = 1024 invalid n */
类型断言
switch
可以 .(type)
来实现类型断言,判断某个值是否为某个数据类型。
package main func main() { var n interface{} // 值必须为 interface 类型 n = 1024 switch n.(type) { case nil: println("n is a nil") case int: println("n is a integer") case float64: println("n is a float64") case bool: println("n is a bool") case string: println("n is a string") default: println("n is invalid") } } // $ go run main.go // 输出如下 /** n is a integer */
关于上面代码注释中提到的 interface
, 后面会讲到, 读者这里只需知道关键字 interface
代表接口类型即可。
这篇关于Go 快速入门指南 - if/else 和 switch的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享
- 2024-12-10搭建个人博客网站之一、使用hugo创建个人博客网站