2014-12-19 42 views
3

我想開發一個簡單的golang包發展Golang包裝,不能使用相對路徑

比方說,它的名字是「你好」,目錄結構如下圖所示

hello 
    games 
    game-utils 

然後招呼。去(主代碼)我有這些:

import (
    gameUtils "./game-utils" 
    "./games" 
) 

確定這個工作順利,直到我推到遠程回購(如github.com),並嘗試使用go get安裝它。問題是與進口路徑,我必須將其更改爲

import (
    gameUtils "github.com/user/hello/game-utils" 
    "github.com/user/hello/games" 
) 

的問題是,每次我開發包我不能導入使用"github.com/user/hello/game-utils",因爲很明顯,我不會有它推到遠程回購,我需要使用"./game-utils"導入它。

有沒有優雅的方法來解決這個問題?

回答

4

閱讀this

你應該永遠使用它導入:

import "github.com/user/hello/game-utils" 

這是因爲旅途中的工具是如何工作的。它會在目錄中的本地計算機上查找它:"GOPATH/src/github.com/user/hello/game-utils"。正如@JimB指出的那樣,編譯器始終與本地源一起工作,導入路徑與GOPATH/src相關。

go get工具是唯一一個在互聯網上查找源代碼的工具。獲取它們之後,它將它們下載到"GOPATH/src/IMPORT_PATH",以便編譯器和其他工具現在可以在它們的本地結構中看到它們。

如果你正在創建一個新的項目,你應該尊重相同的目錄結構。如果您打算將代碼上傳到github,然後手動創建文件夾"GOPATH/src/github.com/YOUR-GITHUB-USER/PROYECT-NAME",然後在那裏初始化您的git repo。 (此作品至少在githgsvngithubbitbucketgoogle code

+0

@Topo 感謝嗨快速響應,所以概括起來講, 我只需要:1。 進口'gameUtils「github上.com/user/hello/game-utils「' 2.使用'go install github.com/user/hello'安裝 3. cd到repo'$ GOPATH/src/github ....' 4。那麼開始在那裏開發(測試,提交,bla bla)? –

+0

@sendyhalim不客氣。你大多是正確的。有關數字2的詳細信息。獲取源代碼(不安裝)。如果我要修改我用'go get'下載的代碼,我更願意自己創建目錄結構並使用'git clone'獲取代碼,按照我的經驗,這可以幫助避免一些git repo配置後來。 – Topo

+0

@ Topop ok!哈哈。 Anw,如果我還沒有推入任何代碼,那麼唯一的方法是手動創建dir('$ GOPATH/src/user/hello')並在那裏開發嗎? –