<p>I have an early prototype of a go-chop (and chomp) library and set of binaries, at <a href="https://github.com/mcandre/go-chop" rel="nofollow">https://github.com/mcandre/go-chop</a></p>
<p>But I'm not sure of the best way to structure my Go stuff. Am I doing it right? Ideally, when other Go users go-get my project, they receive a working library that they can use, as well as a chop and chomp binary in PATH.</p>
<p>Is there a way to organize my Go project to facilitate this? What's the command(s) that other Go users would use to install my stuff?</p>
<hr/>**评论:**<br/><br/>shovelpost: <pre><p>Your Makefile is 40% of the repository's code...</p>
<p>Anyways, if you want to have multiple commands, the most common way I've seen is to have a <code>cmd</code> folder then two or more folders, one for each command which then will contain the <code>main.go</code> of the command. </p>
<p>By following that layout, when someone go gets your repo, they will also get all the commands.</p>
<p>So in your case, instead of <code>cli-chomp.go</code> and <code>cli-chop.go</code> you would have a <code>cmd</code> folder, containing <code>chomp</code> and <code>chop</code> folders containing <code>cli-chomp.go</code> and <code>cli-chop.go</code> respectively or you could even rename them as <code>main.go</code>.</p>
<p>Helpful article: <a href="http://dave.cheney.net/2014/12/01/five-suggestions-for-setting-up-a-go-project" rel="nofollow">Five suggestions for setting up a Go project</a></p></pre>mcandre: <pre><blockquote>
<p>Your Makefile is 40% of the repository's code...</p>
</blockquote>
<p>Lol yeah, that's been my crutch while I learn Go idioms.</p>
<p>When a user runs <code>go get ...</code>, does Go automatically build the .go files, and even place the binaries on PATH? Or what would be the typical steps for a Go user to begin using the cmd/... programs from a Go package URL?</p></pre>shovelpost: <pre><p>As far as I know, just doing <code>go get github.com/someuser/somerepo</code> will install somerepo under your $GOPATH. Any packages will be installed under $GOPATH/pkg and any commands under $GOPATH/bin. So basically the only thing the user has to do is <code>go get</code> and then they can instantly use the commands of somerepo. </p>
<p>Helpful read: <a href="https://golang.org/doc/articles/go_command.html#tmp_3" rel="nofollow">https://golang.org/doc/articles/go_command.html#tmp_3</a></p></pre>howeyc: <pre><p>I would recommend what shovelpost suggested.</p>
<p>I have something that I believe follows such a convention.</p>
<p><a href="https://github.com/howeyc/ledger" rel="nofollow">https://github.com/howeyc/ledger</a></p>
<p>The root is the package and the cmd directory has three separate executables.</p></pre>
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传