从Go中的main导入本地包

时间:2014-05-11 15:38:22

标签: go

我正在使用Go及其net/http stdlib模块编写API,我在名为utils的目录中有一些utils代码。但是当我在main中导入它们时,Go找不到包。根本原因显然是Go包必须保存在$GOPATH/src/中。所以我想知道是否有办法导入本地包并将它们保存在与主包相同的文件夹中。

我正在关注Github目录结构,所以我的$ GOPATH看起来就是这样。

$GOPATH/src/
   |___github.com/
       |___user/
           |___repository/
               |___main.go
               |___utils/
                   |___core.go
                   |___factory.go

由于utils目录与app非常相关,因此将它保存为$ GOPATH / src中的另一个Go应用程序真的很糟糕。除此之外,想象一下我想要在Github上推送我的代码的那一刻。这里只有2个存储库,但如果它是6个,我需要6个私人回购,用于单个应用程序的真正相关和绑定部分。

1 个答案:

答案 0 :(得分:4)

(记录答案,因为乍一看似乎没有答案)

两个文件的package声明应为package utils,并且应使用以下内容导入:

import "github.com/user/repository/utils"

如果您真的想将每个代码文件分开作为单独的包,也可以使子包(标准库io包具有io/ioutil)。

import "github.com/user/repository/utils"
import "github.com/user/repository/utils/sub"

本地目录结构为:

$GOPATH/src/
   |___github.com/
       |___user/
           |___repository/
               |___main.go
               |___utils/
                   |___core.go
                   |___sub/factory.go

(@phndiaye在评论中发布的答案详情)