Go上有多个主要功能

时间:2014-11-26 02:00:18

标签: go task

作为Python和Django开发人员,我可以独立使用脚本在项目中运行任何代码。

我不太确定如何在Go中实现相同的功能,因为看起来每个Go项目应该只有一个主要的可执行文件。

我想从cronjob调用我的项目中的函数,但我不太清楚如何添加它。在我的main函数中使用标志是我能想到的唯一方法。但是如果我的脚本自己接受额外的标志,那么它看起来会很混乱:

go run server.go --debug --another-flag --script-name <MY-SCRIPT> --my-script-flag-one <FLAG-ONE> --my-script-flag-two <FLAG-TWO>

有没有优雅的方法呢?

1 个答案:

答案 0 :(得分:11)

我引用&#34; What is a sensible way to layout a Go project&#34;文章&#34; Structuring Applications in Go&#34;,以项目 camlistore 为例展示。
该项目包括several cmd packages,每个项目都有自己的选项。

另一种选择是使用像spf13/cobra这样的CLI接口库,它允许您定义几个命令(相同的exe,不同的选项集)。

  

Command是申请的中心点   应用程序支持的每个交互都将包含在Command中   命令可以有子命令,也可以选择运行操作。

     

在示例&#34; hugo server --port=1313&#34;,&#39; server&#39;是命令

     

Command具有以下结构:

type Command struct {
    Use string // The one-line usage message.
    Short string // The short description shown in the 'help' output.
    Long string // The long message shown in the 'help <this-command>' output.
    Run func(cmd *Command, args []string) // Run runs the command.
}