【发布时间】:2014-06-26 07:43:25
【问题描述】:
有人可以解释一下import 语句的工作原理吗?
例如我在myapp/app/models 包中有一个类型User:
package models
type User struct {
// exportod fields
}
我在myapp/app/controllers 包中有一个类型Users:
package controllers
import (
_ "myapp/app/models"
"github.com/revel/revel"
)
type Users struct {
*revel.Controller
}
func (c Users) HandleSubmit(user *User) revel.Result {
// Code here
}
这给了我以下错误:
undefined: User
我尝试将导入更改为以下代码:
import (
. "advorts/app/models"
"github.com/revel/revel"
)
但是得到这个错误:
undefined: "myapp/app/controllers".User
我也不明白。那么,import . "something" 和 import "something" 有什么区别?在我的情况下如何正确import我的模型?
【问题讨论】:
-
import . "something"如果您熟悉 Python,则类似于from something import *。在最基本的意义上,您将“某物”包的内容导入到当前命名空间中,因此它不是something.NewThing(),而是简单的NewThing()。尽管测试框架 Ginkgo 以一种非常有效的方式使用了它,但恕我直言,它通常是被避免的。至于布局的导入问题,我建议重新阅读有关如何布局 Go 项目的文档。