此代码来自cli
Go包:https://github.com/codegangsta/cli
package main
import (
"github.com/codegangsta/cli"
"os"
)
func main() {
app := cli.NewApp()
app.Name = "greet"
app.Usage = "fight the loneliness!"
app.Flags = []cli.Flag{
cli.StringFlag{
Name: "lang, l",
Value: "english",
Usage: "language for the greeting",
},
}
app.Action = func(c *cli.Context) {
name := "someone"
if len(c.Args()) > 0 {
name = c.Args()[0]
}
if c.String("lang") == "spanish" {
println("Hola", name)
} else {
println("Hello", name)
}
}
app.Run(os.Args)
}
我是一个Go初学者,除了这一部分,我理解一切:
if len(c.Args()) > 0 {
name = c.Args()[0]
}
那个街区怎么说?为什么有必要?
答案 0 :(得分:4)
函数Args
返回一个对象Args
,它是一个字符串片段(参见context.go
):
type Args []string
要获取该切片的第一个元素([0]
),必须事先检查它是否为空,因此len
测试。如果你不这样做并且切片恰好为空,则会出现index out of range
运行时错误并且程序会出现恐慌。