go - 在同一包中自己的文件中单独实现

标签 go

我正在尝试使用 golang。所以我发明了一个小项目,想用不同的命令构建一个小型控制台应用程序。

我找到了 codegangsta/cli并尝试了这个例子。

    package main

import (
    "os"


    "github.com/codegangsta/cli"
)
func main() {
    app := cli.NewApp()
    app.Commands = []cli.Command{
        {
            Name:      "add",
            Usage:     "add a task to the list",
            Action: func(c *cli.Context) {
                println("added task: ", c.Args().First())
            },
        },
        {
            Name:      "complete",
            Usage:     "complete a task on the list",
            Action: func(c *cli.Context) {
                println("completed task: ", c.Args().First())
            },
        },

    }
    app.Run(os.Args)
}

现在我想将 Commands-array 中的命令放在单独的文件中,并且只引用它们。

我怎样才能做到这一点?

感谢您的一些建议。

最佳答案

下面是拆分文件的几种方法中的一种:

在文件 main.go 中:

package main

import (
    "os"
    "github.com/codegangsta/cli"
)

func main() {
    app := cli.NewApp()
    app.Commands = []cli.Command{
        addCommand,
        completeCommand,
    }
    app.Run(os.Args)
} 

在文件 comamnds.go 中写入:

package main

import (
    "github.com/codegangsta/cli"
)

var addCommand = cli.Command{
        Name:      "add",
        Usage:     "add a task to the list",
        Action: func(c *cli.Context) {
            println("added task: ", c.Args().First())
        },
    }

 var completeCommand cli.Command{
        Name:      "complete",
        Usage:     "complete a task on the list",
        Action: func(c *cli.Context) {
            println("completed task: ", c.Args().First())
        },
    }

关于go - 在同一包中自己的文件中单独实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29219958/

相关文章:

docker - 如何禁用 CGO 以运行测试

go - 如何在golang中转换或移动slice中的值?

pointers - 在 Go 中调用接口(interface)指针上的方法

go - 如何全局安装golang工具,然后在不同GOPATH的多个项目中使用?

go - 使用 "termui"的 golang 终端仪表板

eclipse - 不要使用 GoClipse 制作二进制文件

sql - golang数据库开放函数歧义

go - 无法通过-extldflags

unit-testing - 如何在 go 中测试 pubsub 消息确认?

go - 是否有等同于 os.Args() 的函数?