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-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南