导入本地包

时间:2015-05-03 18:32:53

标签: go

我的项目结构如下:

--/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"

但这没有任何作用。

2 个答案:

答案 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"