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

use*_*000 5 go

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

    /project
        models/
            Product.go
        main.go
Run Code Online (Sandbox Code Playgroud)

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")
}
Run Code Online (Sandbox Code Playgroud)

Product.go 的内容是:

package models

type Product struct {
    Name string
}
Run Code Online (Sandbox Code Playgroud)

我从打字中得到的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"
Run Code Online (Sandbox Code Playgroud)

当项目目录的位置是$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。

谁能帮我。谢谢。

Jim*_*imB 5

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