gpt4 book ai didi

go - revel : "code does not compile: undefined: models"

转载 作者:IT王子 更新时间:2023-10-29 02:16:39 27 4
gpt4 key购买 nike

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

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 交互):

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 不编译:undefined: models

我尝试导入“RevelApp/app/models”,然后删除 models.TodoItem{} 中的模型(如此处描述:Revel with Gorm "undefined: Page"),但出现错误:App 无法启动revel/harness:应用超时

该链接是我能找到的与此问题相关的唯一链接。我错过了什么吗?

编辑:$GOPATH:

/home/me/Source/go

模型位置:

/home/me/Source/go/src/RevelApp/app/models

我如何导入模型包:

import (
."RevelApp/app/models"
"github.com/revel/revel"
"github.com/coopernurse/gorp"
"database/sql"
_ "github.com/go-sql-driver/mysql"
"fmt"
"strings"
)

最佳答案

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

If an explicit period (.) appears instead of a name, all the package's exported identifiers will be declared in the current file's file block and can be accessed without a qualifier.

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

就是说 .. 我建议避免这种情况并从导入语句中删除点:

import (
"RevelApp/app/models"
"github.com/revel/revel"
"github.com/coopernurse/gorp"
"database/sql"
_ "github.com/go-sql-driver/mysql"
"fmt"
"strings"
)

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

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

关于go - revel : "code does not compile: undefined: models",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26883152/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com