我希望golang语法可以耐时间(这意味着如果我现在编写代码,则该语法仍然有效10年)
switch strings.ToLower(firstCommand) {
default:
fmt.Println("Default 1st Nest")
case "c":
fmt.Println("C CREATE")
fallthrough
case "u":
fmt.Println("U UPDATE")
fallthrough
case "d":
fmt.Println("D DELETE")
dosomething()
switch strings.ToLower(secondCommand) {
default:
fmt.Println("Default 2nd Nest")
case "a":
donothing()
}
}
上面的代码语法合法吗?我的意思是,它经得起时间的考验吗?否则,有什么更好的写法呢?
答案 0 :(得分:2)
阅读Go编程语言规范,Go 1兼容性保证和Go 2计划。
The Go Programming Language Specification
“ switch”或“ select”语句中的每个子句都充当隐式
“ Switch”语句提供多路执行。表达式或类型 将说明符与“开关”内的“案例”进行比较以确定 要执行哪个分支。
Go 1 and the Future of Go Programs
打算按照Go 1规范编写的程序将 继续在 该规范。在某些时候,Go 2规范可能会 出现,但是直到那个时候,今天可以运行的Go程序应该 即使Go 1的将来的“点”版本出现了,仍继续工作(Go 1.1,转到1.2等)。
这是我今天在Gophercon 2017上的[Russ Cox]演讲的文本,询问 在讨论和计划Go 2时获得整个Go社区的帮助。
最后,我们将如何运送和交付Go 2?
我认为最好的计划是运送向后兼容的零件 Go 1发行版中按功能逐个递增的版本 顺序。
完成所有向后兼容的工作(例如在Go 1.20中说),然后 我们可以在Go 2.0中进行向后不兼容的更改。
所有这些都是推测性的,我只列出了具体的发行版号 提到的是球场估计的占位符,但我想 清楚我们并没有放弃Go 1,实际上我们将带来 尽可能地前进1。
编译并测试概念验证程序。例如,
package main
import (
"fmt"
"strings"
)
func dosomething() {}
func donothing() {}
func main() {
var firstCommand, secondCommand string
switch strings.ToLower(firstCommand) {
default:
fmt.Println("Default 1st Nest")
case "c":
fmt.Println("C CREATE")
fallthrough
case "u":
fmt.Println("U UPDATE")
fallthrough
case "d":
fmt.Println("D DELETE")
dosomething()
switch strings.ToLower(secondCommand) {
default:
fmt.Println("Default 2nd Nest")
case "a":
donothing()
}
}
}
游乐场:https://play.golang.org/p/Q1ZdYqeNk67
输出:
Default 1st Nest
现在,您有一个权威的答案。