我目前有3个文件,它们都有package main
在顶部。
GOPATH/src/example.com/myweb/main.go
GOPATH/src/example.com/myweb/api.go
GOPATH/src/example.com/myweb/viewmodels/home.go
当我编译时,我得到了这个错误:
./main.go:21: undefined: Home
./main.go:39: api.Home undefined (type API has no field or method Home)
我正在使用以下命令进行编译:
go build
如果我这样做:
go build main.go api.go viewmodels/home.go
它说没有这样的文件或目录,然后是一个不存在的文件的路径:
GOPATH/src/example.com/myweb/viewmodels.main.go
如果我使用的是package main,这应该只适用于go build吗?
发布于 2016-04-18 17:48:34
您不能在一个目录中混合两个不同的包。每个目录都有自己的包。
go文档(请参阅:golang.org/doc/code.html)说明了以下与您的情况相关的包:
您的问题的解决方案是:
适用于$GOPATH/src/example.com/myweb/viewmodels/home.go
package viewmodels
的package main
适用于$GOPATH/src/example.com/myweb/main.go
和$GOPATH/src/example.com/myweb/api.go
import "example.com/myweb/viewmodels"
的文件使用viewmodels
软件包(例如main.go、api.go)您的项目将如下所示:
https://stackoverflow.com/questions/36681089
复制相似问题