gpt4 book ai didi

go - 如何将 Golang 项目(一组包)放到 Github?

转载 作者:IT老高 更新时间:2023-10-28 13:00:26 29 4
gpt4 key购买 nike

从 Golang 教程中我不清楚如何将 Golang 代码放到 Github 以便以后能够从 Github 将该代码作为包导入。

这是来自 Golang 教程 http://golang.org/doc/code.html 的示例项目工作区(目录结构) :

bin/
hello # command executable
pkg/
linux_amd64/ # this will reflect your OS and architecture
github.com/user/
newmath.a # package object
src/
github.com/user/
hello/
hello.go # command source
newmath/
sqrt.go # package source

那么,我需要做什么,我需要在这个工作区中的哪里git init,以便以后能够:

  1. 仅将 newmath 包导入到我的某个单独项目中。这样:

    import "github.com/user/newmath"
  2. 只获取 hello.exe 可执行文件。

  3. 获取整个项目工作区(所有目录:bin、pkg、src)。

最佳答案

  1. 对于包 newmath 与(稍后 2.)相同

    $ mkdir $GOPATH/src/github.com/username/newmath
    $ cd $GOPATH/src/github.com/username/newmath
    $ git init
    $ ... more git setup
    $ touch sqrt.go
    $ gvim sqrt.go
    $ git add sqrt.go
    $ git commit -a -m 'Inital commit'
    $ git push

    现在人们可以做到

    $ go get github.com/username/newmath

    导入“github.com/username/newmath”

    现在应该在他们的来源中工作。该软件包将安装在自动需求。

  2. 我假设 hello 命令和 newmath 包是不相关,或没有足够紧密的关系,属于一个单一的存储库。

    $ mkdir $GOPATH/src/github.com/username/hello
    $ cd $GOPATH/src/github.com/username/hello
    $ git init
    $ ... more git setup
    $ touch hello.go
    $ gvim hello.go
    $ git add hello.go
    $ git commit -a -m 'Inital commit'
    $ git push

    现在人们可以做到

    $ go get github.com/username/hello
    $ go install github.com/username/hello

    安装你的命令hello

    • $GOPATH/pkg 的内容发布在托管服务。
    • 在托管服务上发布$GOPATH/bin 的内容有些 有意义。但我不鼓励这种做法,因为显而易见原因。此外,如果您要发布源 -二进制文件不是必需的,每个人都可以构建他们的(受信任的)拥有。

您似乎仍然对“工作区”一词感到有些困惑。一个工作区通常在开发人员的机器上只存在一次,但它通常包含多个存储库。一些由开发人员编写,另一些是从 Internet 上“获取”的。在这种情况下发布整个 wokspace 是没有意义的。

但是,有些人在每个项目或每个存储库甚至每个包都使用单独的工作区。我不知道有什么好处。或者说得更好一点,我认为与由 export GOPATH=$HOME 定义的单个工作区相比,没有任何东西(就像我多年来的情况一样,多年来没有任何问题)。

关于go - 如何将 Golang 项目(一组包)放到 Github?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16900938/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com