我正在使用Go开发一个小工具。最近,我注意到该工具需要从shell脚本调用,因为它使用shell函数。
假设我的工具名为atool
。因此,go build
生成二进制atool
,我的工具的Go结构为github.com/myaccount/atool
。现在,我想用atool-cli
构建go build
二进制文件,并从shell脚本atool
调用它。我怎样才能做到这一点?
我想到的唯一方法是将结构转换为github.com/myaccuont/atool-cli
。但是我不想这样做,因为已经宣布了,而且这条道路似乎有点有趣。
答案 0 :(得分:11)
只是发表评论"官方":
go build -o atool-cli github.com/you/atool
答案 1 :(得分:7)
一种方法是将自己的结构本身作为一个库,并提供主要包,将它们的主要入口点放在子目录中。
您可以在main
中添加github.com/myaccount/atool/atool-cli
个包,其导入github.com/myaccount/atool
并实施func main()
。一些包含多个命令的包甚至都有一个/cmd/
目录,其中包含多个可以构建的cli工具(请参阅camlistore
作为示例)