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

标签 go

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

    /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::找不到导入:“github.com/gin-gonic/gin”

但是当项目目录的位置是~/project时,go run main.go可以正常运行。

我用的是go1.5.3。

谁能帮帮我。谢谢。

最佳答案

Relative import paths只允许作为一种方便,主要是为了实验。 go buildgo install 不完全支持它们。如果您希望您的包与 go 工具一起使用,请不要使用相对导入。按照 How to Write Go Code 中的描述构建您的代码.

关于Golang - 为什么我不能在 GOPATH/src/project 中导入本地包,但可以在主目录中导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34815455/

相关文章:

go - 或者golang模板中的语句结合gt/lt(greaterThan, lowerThan)

sql - 将查询移至处理程序获取 "undefined: db"(golang)

go - 我如何在 Go 中对接口(interface) slice 进行 json 解码?

templates - 在Go模板中按名称访问结构成员

go - 在golang中全局设置时区

go - 提供 CSS 服务时,Golang 中出现 MIME 类型 ('text/plain' ) 错误

go - 为什么在这个函数中使用 channel ?

arrays - 如何从golang中的查询中获取数组键的值

go - 在 Go 中连接到多个数据库的好习惯是什么?

git - 通过代理进行go-git克隆