首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何导入特定于项目的go包,同时为完全不同的项目所共有的go包维护一个单独的位置?

如何导入特定于项目的go包,同时为完全不同的项目所共有的go包维护一个单独的位置?
EN

Stack Overflow用户
提问于 2016-03-14 22:25:20
回答 2查看 879关注 0票数 1

所以我第一次开发了一个go应用程序。我知道有两个变量GOROOT和GOPATH用于维护go包。到目前为止,我理解的是GOROOT用于go二进制文件,GOPATH主要用于存储项目所需的库和助手包。

这是我目前的项目结构-

代码语言:javascript
复制
/Users/john/work/project-mars
/Users/john/work/project-mars/main.go
/Users/john/work/project-mars/helper
/Users/john/work/project-mars/helper/helper.go

main.go含量

代码语言:javascript
复制
package main

import (
    "fmt"
    "helper"
)

func main(){
    fmt.Println("Hello")
}

helper.go含量

代码语言:javascript
复制
package helper

import (
    "fmt"
)

func SayWorld(){
    fmt.Println("World")
}

围棋的变量是-

代码语言:javascript
复制
GOROOT = /Users/john/apps/go
GOPATH = /Users/john/apps/go-packages

问题:当我执行以下命令时,我得到了这个错误-

代码语言:javascript
复制
mac-machine:project-mars john$ go build main.go 
main.go:5:5: cannot find package "helper" in any of:
    /Users/john/apps/go/src/helper (from $GOROOT)
    /Users/john/apps/go-packages/src/helper (from $GOPATH)

我知道GOPATH应该是我正在做的项目目录。但我关心的是保持我的项目和库包以模块化的方式,以便以后我有一个完全不同的项目(即项目-极光),它可能使用相同的github助手包,它们不会被下载两次,无论是在项目-火星和项目-极光。

在处理不同的项目时,如何避免这种冗余?

更新:不是说我不能编译它们。我可以使用GOPATH作为我的项目目录,使用src,pkg,bin项目布局,还可以重新组织文件并最终编译项目。是的。但我的问题是解决这一单一的GOPATH方式中出现的公共一揽子问题的冗余问题。

EN

回答 2

Stack Overflow用户

发布于 2016-03-15 12:47:41

请仔细阅读如何编写Go代码。它解释了你需要知道的一切。

您不使用GOPATH作为您的项目目录。假设您想使用标准Go工具,您的包源需要在与其导入路径相对应的目录中,就像任何其他包一样。

您的项目应该位于$GOPATH/src/project-mars,它可以通过go install project-mars构建。helper包应该位于$GOPATH/src/project-mars/helper,并通过"project-mars/helper"导入。

票数 1
EN

Stack Overflow用户

发布于 2016-03-14 23:40:00

将helper-lib文件夹重命名为helper

然后将该文件夹从project-mars移动到上文件夹工作。

这应该会让你

代码语言:javascript
复制
import "helper" 

语句在main.go work中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35999277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档