我的项目结构如下:
--/project
----main.go
----/models
------user.go
在main.go中,我想用户user.go:
user.go:
package models
type User struct {
Name string
}
main.go:
package main
import (...)
func main() {
user := &User{Name: "Igor"}
}
如何从main.go导入user.go?
/ project在GOPATH下,所以我试过了:
import "project/models"
但这没有任何作用。
答案 0 :(得分:7)
您的设置正确,您使用的包不对。
变化:
user := &User{Name: "Igor"}
为:
user := &models.User{Name: "Igor"}
或者如果您不想总是说models.XXX,请将您的导入更改为。
import . "project/models"
我确实发现这样做会使代码更难以长期阅读。 对于读者来说,显而易见的是" models.User"来自,而不是简单的"用户"通常这意味着它来自这个包。
答案 1 :(得分:2)
如果您要在go工作区之外构建项目,可以使用relative imports:
import "./models"
然而,使用相对进口并不是一个好主意。首选方法是导入完整的包路径(并将项目放在proper go workspace中):
import "github.com/igor/myproject/models"