32

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)。

4

3 に答える 3

37
  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
    

    import "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しかし、明らかな理由から、私はこの慣習を思いとどまらせます。さらに、ソースを公開する場合 - バイナリは必要なく、誰もが自分の (信頼できる) ビルドを作成できます。

「ワークスペース」という用語にまだ少し混乱しているようです。多くの場合、ワークスペースは開発者のマシンに一度だけ存在しますが、通常は複数のリポジトリが含まれています。開発者が作成したものもあれば、インターネットから「入手」したものもあります。この場合、wokspace 全体を公開することはほとんど意味がありません。

ただし、プロジェクトごと、リポジトリごと、またはパッケージごとに別のワークスペースを使用している人もいます。何のメリットがあるのか​​わからない。または、より良い言い方をすれば、たとえば、定義された単一のワークスペースと比較して何もないと思いますexport GOPATH=$HOME(私の場合のように、何年もの間何の問題もありませんでした)。

于 2013-06-03T16:41:24.107 に答える
0

git cli のファンでない場合は、Web インターフェイスを介して github リポジトリにアップロードするだけで済みます。パッケージ名がリポジトリと同じ名前 (小文字) であることを確認してください。REST API ライブラリの github.com/Digitalblueeye/enroute でも同じことを行いました。

于 2016-08-06T19:55:14.993 に答える