猿问

下面的 c.Args() > 0 有什么用

此代码来自cliGo 包: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]

}

那个块说的是什么?为什么有必要?


猛跑小猪
浏览 150回答 1
1回答

蝴蝶不菲

该函数Args返回一个对象Args,它是一个字符串切片(请参阅context.go):type Args []string要获取该切片 ( [0])的第一个元素,必须事先检查它是否不为空,从而进行len测试。如果不这样做并且切片恰好是空的,则会出现index out of range运行时错误并且程序会出现混乱。
随时随地看视频慕课网APP

相关分类

Go
我要回答