Go 语言中的 switch 结构使用上更加灵活,它几乎接受任意形式的表达式。包含以下三种常见形式。
switch第一种形式:提供一种相同类型的任意值
switch var {case var1:...case var2:...}
变量可以是任何类型,但必须为同一类型,类型不局限于常量或者整数。
您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:
case val1, val2, val3
。匹配到某个分支,执行后自动跳出switch,不需要执行
break
语句。如果在执行完每个分支的代码后,还希望继续执行后续分支的代码,可以使用
fallthrough
关键字来达到目的。可选的
default
分支可以出现在任何顺序,但最好将它放在最后,不符合任何条件时,执行相关代码。
因此:
switch i {case 0:println("000000000")case 1:println("111111111") //不会被执行}
但是:
switch i {case 0:println("000000000")fallthroughcase 1:println("111111111") //会被执行}
switch的第二种形式:不提供任何判断的值
当任一分支的测试结果为 true 时,该分支的代码会被执行。这看起来非常像链式的 if-else
语句,但是在测试条件非常多的情况下,提供了可读性更好的书写方式。
switch {case condition1:...case condition2:...}
swich的第三种形式:包含一个初始化语句
这种形式可以非常优雅的进行条件判断
switch initalization {case var1:...case var2:...}
例如:
switch result := calculate(); {case result < 0:...case result > 0:...default:...}
switch a, b := x[i], y[j]; {case a < b: t = -1case a == b: t = 0case a > b: t = 1}
相比于Java语言,Go对于switch的实现方式即简洁又更加优雅和实用,可以尝试多用switch优化代码可读性。
文章转载自爱码派,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




