Golang - 为什么我不能在GOPATH / src / project中导入本地包但可以在主目录中?

时间:2016-01-15 16:21:35

标签: go

我有一个项目,其文件夹结构如下:

div

main.go的内容是:

    /project
        models/
            Product.go
        main.go

Product.go的内容是:

package main

import (
    "./models"
    "fmt"
    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()
    fmt.Println(models.Product{})
    r.GET("/", func(c *gin.Context) {
        c.String(200, "he")
    })

    r.Run(":3000")
}

我从键入package models type Product struct { Name string } 获得的是:

go env

当项目目录的位置为GOARCH="amd64" GOBIN="" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/Users/Mac/go" GORACE="" GOROOT="/usr/local/Cellar/go/1.5.3/libexec" GOTOOLDIR="/usr/local/Cellar/go/1.5.3/libexec/pkg/tool/darwin_amd64" GO15VENDOREXPERIMENT="" CC="clang" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments - fmessage-length=0 -fno-common" CXX="clang++" CGO_ENABLED="1" 时,如果我运行$GOPATH/src/project,我得到的是此错误消息:go run main.go

但是当项目目录的位置为./main.go:: can't find import: "github.com/gin-gonic/gin"时,~/project可以按预期工作。

我使用go1.5.3。

任何人都可以帮助我。感谢。

2 个答案:

答案 0 :(得分:2)

Relative import paths仅允许作为方便,主要用于实验。 orgo build并未完全支持它们。如果您希望您的包使用go install工具,请不要使用相对导入。按照How to Write Go Code

中的说明构建代码

答案 1 :(得分:-1)

当您在代码中使用“github.com/gin-gonic/gin”时。这是一个外部进口。所以go编译器会尝试在你的工作区中找到这个包。因此,您需要在go工作区或构建路径中手动下载这些软件包 “go get github.com/gin-gonic/gin”。