2016-08-20 61 views
0

我想創建一個包含主函數並使用標誌包來指定參數的包。Golang包也必須獨立使用cli

此外,我希望能夠在其他軟件包中包含此軟件包,並使用類似的語法來調用它的方法來傳遞參數cli上的參數。也許像

err := myPackage.setFlags(args ...string) 
out, err := myPackage.exec() 

一些我想要的包括包有​​一個主功能的原因是:

  • 它讓我的包分發作爲一個獨立的可執行文件。我的用戶可能並不需要完整的系統

  • 它可以進行手動故障排除更容易

我應該把一切都獨立,並使用OS \ EXEC?

我應該爲每個包創建獨立包裝(也許可以生成這些包?),並直接從完整的系統調用導出的函數,而不執行setFlags事情?

有沒有一個好的設計模式,我可以遵循這樣做?

或者我想起了反模式?

回答

1

一個常見的模式是在您的項目中有一個cmd包含可執行文件。

像這樣的事情

cmd/ 
    foo/main.go 
pkg/ 
    foo/foo.go 

cmd/foo進口pkg/foo和處理命令行標誌。 pkg/foo是包含所有庫代碼的包。此模式可讓其他人導入pkg/foocmd/foo,併爲您提供一個名爲foo的可執行文件。