首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Revel:“代码不编译:未定义:模型”

Revel:“代码不编译:未定义:模型”
EN

Stack Overflow用户
提问于 2014-11-12 09:14:05
回答 1查看 1.6K关注 0票数 1

我创建了/app/model/todo-item.go文件,如下所示:

代码语言:javascript
复制
package models

import (
  "github.com/revel/revel"
)

type TodoItem struct {
  Id              int64   `db:"id" json:"id"`
  Name            string  `db:"name" json:"name"`
}

func (b *TodoItem) Validate(v *revel.Validation) {

  v.Check(b.Name,
    revel.ValidRequired(),
    revel.ValidMaxSize(25))
}

在src/RevelApp/app/controllers/init.go中,我有以下内容(PS,我使用GorpController与MySQL交互):

代码语言:javascript
复制
func defineTodoItemTable(dbm *gorp.DbMap){
  // set "id" as primary key and autoincrement
  t := dbm.AddTable(models.TodoItem{}).SetKeys(true, "id") 
  t.ColMap("name").SetMaxSize(25)
}

我收到了一个错误:,Go代码src/RevelApp/app/controllers/init.go不编译:未定义:模型

我尝试过导入。“RevelApp/ app /model”然后删除了models.TodoItem{}中的模型(如此处描述者:Revel with Gorm "undefined: Page"),我得到了错误:应用程序未能启动revel/:app超时。

这是我唯一能找到的与这个问题有关的联系。我是不是遗漏了什么?

编辑:$GOPATH:

代码语言:javascript
复制
/home/me/Source/go

模特位置:

代码语言:javascript
复制
/home/me/Source/go/src/RevelApp/app/models

我是如何导入模型包的:

代码语言:javascript
复制
import (
    ."RevelApp/app/models"
    "github.com/revel/revel"
    "github.com/coopernurse/gorp"
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
    "fmt"
    "strings"
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-12 10:44:17

您已经使用点(.)导入限定符导入模型。来自语言规范:

如果一个明确的周期(.)出现而不是名称时,所有包的导出标识符都将在当前文件的文件块中声明,并且可以在没有限定符的情况下访问。

这意味着您不需要使用models.TodoItem。您可以简单地使用TodoItem

那就是说..。我建议避免这样做,并从import语句中删除点:

代码语言:javascript
复制
import (
    "RevelApp/app/models"
    "github.com/revel/revel"
    "github.com/coopernurse/gorp"
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
    "fmt"
    "strings"
)

为什么?它阻止本地文件范围变得拥挤,并允许您查看每个对象实际驻留的位置。

为了完整(而且您可能想知道点是相似的),mysql package语句前面的下划线(mysql)基本上是“导入这个包.但是我不需要直接在其中使用任何东西”。这会激发包init函数,允许它向database/sql包例程注册自己。这就是为什么当您使用sql.DB类型时,它最终会被路由到MySql包代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26883152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档