golang在子目录

时间:2018-07-23 23:19:20

标签: go gin

警告:长帖子!

我是新手。

错误消息

controllers/user.go:4:2: cannot find package "(underscore)/home/ubuntu/goapi/src/github.com/roes/api/vendor/github.com/gin-gonic/gin" 
in any of: /usr/local/go/src/(underscore)/home/ubuntu/goapi/src/github.com/roes/api/vendor/github.com/gin-gonic/gin (from $GOROOT) 
     /home/ubuntu/goapi/src/_(underscore)/home/ubuntu/goapi/src/github.com/roes/api/vendor/github.com/gin-gonic/gin (from $GOPATH)

转到环境

GOPATH="/home/ubuntu/goapi"
GOROOT="/usr/local/go"

文件夹结构

github.com/rose
 api
  main.go // the loading gin is ok here
  controller
   |-user.go //with import ( "github.com/gin-gonic/gin" ) : error

只想知道会发生什么? 去环境看起来还可以。

我确实和我的朋友Google核对过,有些问题相似,但答案对我不起作用:(

任何人,请。

谢谢。

更多代码:

  package controller

  import (
    "github.com/gin-gonic/gin"
    "net/http"
    //      "github.com/astaxie/beego/orm"
    "../database"
    "../models"
  )

  func init() {
    database.ConnectToDb()
    ORM = database.GetOrmObject()
  }

   //UserController ...
   type UserController struct{}

   func createUser(c *gin.Context) {

示例资源https://github.com/thearavind/go-gin-pg ,这个例子没错 我只是像MVC结构

UPDATE1 我确实删除了。 并再次安装流Linux版本 https://golang.org/doc/install 然后

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

然后 https://github.com/gin-gonic/gin#use-a-vendor-tool-like-govendor 示例代码运行正常。 当我使用

用user.go添加控制器文件夹时
 import( "github.com/gin-gonic/gin")

完整代码

  package controller
  import( "github.com/gin-gonic/gin")
  func somestring(){
    return "hello world"
  }

在main.go中,我在上面使用

   curl https://raw.githubusercontent.com/gin-gonic/gin/master/examples/basic/main.go > main.go

添加到导入

    "./controller"
    "fmt"

添加到主要功能

        user := new(controller.somestring)
        fmt.Printf(user)

我知道这对我来说不是一个好代码,但是会再次产生此错误,就像这样

 controller/user.go:4:2: cannot find package "github.com/gin-gonic/gin" in any of:
/usr/local/go/src/github.com/gin-gonic/gin (from $GOROOT)
/home/ubuntu/go/src/github.com/gin-gonic/gin (from $GOPATH)

(这次没有下划线)

:(,没有运气重新安装

更新2 我可以找到路径,但不能找到下划线

 08:56:35 ~/go/src/github.com/jerry/core$ cd /home/ubuntu/go/src/github.com/jerry/core/vendor/github.com/gin-gonic/
 08:56:45 ~/go/src/github.com/jerry/core/vendor/github.com/gin-gonic$

3 个答案:

答案 0 :(得分:0)

如果在项目的根路径中未启用go mod,则必须启用go mod并安装软件包。

例如,缺少一个名为“ / gin-gonic / gin”的软件包,或者您找不到该软件包。

请在src文件夹中或与github.com文件夹并行运行。

$ GO111MODULE=on go get -u github.com/gin-gonic/gin@v1.3.0
  1. 我假设您的 $ GOPATH是Users / YourUserName / go

我希望这会有所帮助。

答案 1 :(得分:0)

自 Go v1.11 起,您可以使用 go modules 来创建带有 Go src/ 文件夹之外的模块的项目。为此,您只需在根文件夹中运行命令 go build

这篇文章解释了一切:https://medium.com/mindorks/create-projects-independent-of-gopath-using-go-modules-802260cdfb51

Gl & Hf :D

答案 2 :(得分:-1)

也许我只是错过了项目文件夹中每个文件夹的这一步。 (非常重要)

  mkdir -p $GOPATH/src/github.com/myusername/project && cd "$_" 

我一直问我的朋友Google,答案是:goVendor非常依赖$ GOPHATH。 然后我用上述命令创建控制器文件夹。所以每个文件夹也一样。没问题:)

谢谢大家的帮助和查看