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

问题描述 投票:3回答:2

这是新手问题。假设我在一个名为“ myprogram”的目录(此处以root用户身份启动的存储库)中有一个Go代码。我写了一些分成几个子目录的软件包。

然后我有

存储库,根目录

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

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

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----------- package1----------- package2----------- package3

我们使用命令运行Vim,类似这样...

$ vim

总而言之,如何使我的程序通过命令而不是通过go run main运行?

我可以参考任何开源资源库吗?或者,请让我知道要阅读的软件包或文档。我尝试过

go install

但是无法使其如我所愿。

非常感谢!

go package-managers packagemaker
2个回答
2
投票

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


0
投票

看看this one

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