Go,Golang:命令行界面的程序,包结构

时间:2014-02-21 03:16:37

标签: go package-managers packagemaker

这是新手问题......我们说我在一个名为" myprogram"的目录(这里以root身份启动的存储库)中有一个Go代码。我写了一些分为几个子目录的包。

然后我

存储库,根目录

myprogram
----------- package1
----------- package2
----------- package3

然后在myprogram目录中,我将使用main程序包为主程序编写代码,主程序将调用子目录中定义的所有程序包,如下所示:

main.go

import "github.com/username/package1"
import "github.com/username/package2"
import "github.com/username/package3"

func main() {
    package1.Function1()
    ....
}

然后我可以用

运行这段代码
$ go run main.go

到目前为止我没有问题。但是,如果这个程序有一些标志功能呢?

$ go run main.go  flag1 flag2

这有效,但我想运行类似

的东西
$ myprogram
$ flag1
....
$ flag2

由于所有程序和源代码都将包含在myprogram目录下,myprogram也是项目名称,存储库

myprogram
----------- package1
----------- package2
----------- package3

我们用命令运行Vim,就像这样......

$ vim

总结一下,如何通过命令运行程序,而不是运行main?

我可以参考哪个开源存储库?或者,请让我知道要阅读的包或文档。我试过了

go install

但是不能让它像我想要的那样工作。

非常感谢!

2 个答案:

答案 0 :(得分:2)

使用go build。这将在当前目录中创建包的可执行文件。您还可以运行go build <packagename>,在$GOPATH/bin中创建二进制文件。

答案 1 :(得分:0)

看看this one

  • 这是一个可供人们参考的开源存储库
  • 它说明了如何处理主程序具有某些需要不同标志的子功能的情况
  • 并确保它显示了如何使程序通过命令而不是通过go run main运行
  • 最重要的是,通过自动生成所有可以自动生成的东西,使整个过程尽可能简单