猿问

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

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


    /project

        models/

            Product.go

        main.go

main.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")

}

Product.go 的内容是:


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,go run main.go可以按预期工作。


我使用 go1.5.3。


谁能帮我。谢谢。


www说
浏览 263回答 2
2回答

胡说叔叔

相对导入路径只是为了方便起见,主要用于实验。他们不是完全支持go build和go install。如果您希望您的包与go工具一起使用,请不要使用相对导入。按照如何编写 Go代码中的描述构建您的代码。

萧十郎

当您在代码中使用“github.com/gin-gonic/gin”时。它是外部导入。所以 go 编译器会尝试在你的工作区中找到这个包。因此,您需要在 go 工作区或构建路径“go get github.com/gin-gonic/gin”中手动下载这些包。
随时随地看视频慕课网APP

相关分类

Go
我要回答