我正在创建一个Web API。
我在同一个文件main.go
中构建了我的服务器和控制器。
我创建了另一个文件名model.go
,我在其中声明了一个Person
结构。
我无法在main.go
中导出我的模型。
每次运行或构建时都会收到此错误:
can't load package: package .: found packages main
有没有办法导出func / const并将它们导入到具有良好路径的文件中? (就像JavaScript的工作方式一样)。
这是我的树:
myapp/
--main.go/
--model.go/
这是我的导入: 的 main.go
package main
import (
"encoding/json"
"log"
"net/http"
"./person"
"github.com/gorilla/mux"
)
model.go
package person
type Person struct {
ID string `json:"id,omitempty"`
Firstname string `json:"firstname,omitempty"`
Lastname string `json:"lastname,omitempty"`
Address *Address `json:"address,omitempty"`
}
var people []Person
答案 0 :(得分:5)
在同一文件夹中,您必须具有相同的包名称。
当golang进程导入时,它会加载整个目录下的所有文件。
根据您提供的代码,model.go包名必须是main。
您根本不需要从main.go导入model.go。
现在,有一点需要了解。当您运行go build / run / install时,它将获取作为参数传递的文件列表以初始化构建过程。
在当前设置中,这意味着您必须将组成主程序包的所有文件传递到命令行,否则,它们将被忽略,在您的情况下,这意味着构建失败。
在纯文本中,您将go build *.go
代替go build main.go
将来如果你想避免构建多个源文件,你应该有一个唯一的main.go,其中包含最少的代码来初始化你正在编写的程序。因此,model.go
的内容将存在于不同的包(目录)中,并将通过import xyz
语句导入main。
最后,import
指令的导入路径不得相对于当前工作目录。它们都是基于GOPATH/src
的。