2017-08-29 40 views
0

我想在Go中構建一個集合包,並且導入路徑遇到問題。導入程序包中的路徑問題

我正在建模Java Collections界面。這裏是我的文件結構

+/$GOPATH 
    /bin 
    /pkg 
    /src 
     /github.com 
      /user 
       /collections 
        collections.go 
        main.go 
        /collections 
         /bstAvl 
         bstAvl.go 

我collections.go文件看起來像這樣:

package collections 

type Collection interface { 
    Add(interface{}) (bool, error) 
    AddAll(Collection) (bool, error) 
    Clear() 
    Contains(interface{}) (bool, error) 
    Remove(interface{}) (bool, error) 
    Size() uint 
} 

bstAvl.go我試圖使用Collection接口Collections.go

如何導入所需包訪問Collection界面?

我覺得我已經走上了路徑,可能會讓它變得比它應該更復雜。您推薦的結構更簡單嗎?

理想情況下,我希望我所有的集合都在collections包下,以便它可以作爲庫導出並在需要時用於其他應用程序。

P.S我已閱讀Structuring applications in Go by Ben Johnson。但我仍然感到困惑。任何幫助是極大的讚賞。

編輯: 我想我過去的包裝結構。我決定堅持這一點:

+/$GOPATH 
    /bin 
    /pkg 
    /src 
     /github.com 
      /user 
       /collections 
        collections.go 
        main.go 
        bstAvl.go 

回答

2

要導入collections內bstAvl.go,使用完整路徑:

import "github.com/user/collections" 

當涉及到的結構,這一切都取決於封裝類型,以及我不知道Java集合足以在這個特定情況下給出建議。

然而,爲了避免受到重複集合/集合,我建議直接放置bstAvl文件夾下的初始集合 -folder:

+/$GOPATH 
    /bin 
    /pkg 
    /src 
     /github.com 
      /user 
       /collections 
        collections.go 
        main.go 
        /bstAvl 
         bstAvl.go